我正在使用 MVC3 并使用 jquery 构建一个标记(链接)。问题是我只能让我的链接在 prod 或 dev 中工作,而不能同时在两者中工作。这是我网站的生产网址。
这是我的开发网址。 http://localhost/TVAP
因此,我有一个通过 jquery 创建的链接,如下所示。
var actionCell = $('#itemlist').find(rowId).find(actionCellId);
$('<a>Edit</a>').attr({ 'id': 'edit-' + response.id, 'href': '/Items/Edit/' + response.id }).appendTo(actionCell);
在生产中,这有效,并创建了一个链接
<a id="edit-17" href="/Items/Edit/17">
但在开发(本地)中它不起作用,因为我需要它。
<a id="edit-17" href="/TVAP/ItemManagement/Edit/17">
我从中得到以下信息
$(location).attr('host') ==> localhost
$(location).attr('host') ==> http://localhost/TVAP/Items/Index
要么信息太少,要么信息太多。我知道我可以检查 localhost 并根据需要附加 TVAP,但这看起来像是 hack。另一个开发人员可能使用 ASP.NET VS 开发服务器并获得一个 URL 将包含本地主机但没有我得到的 TVAP。 即 - http://localhost:64301/Items/Index
最佳答案
这是我在 _Layout.cshtml 中经常做的事情:
<head>
<!-- other stuff -->
<script type="text/javascript">
window.myProjectName = {
baseUrl : '@Url.Content("~/")'
};
</script>
<!-- other scripts -->
</head>
然后您始终可以使用诸如 myProjectName.baseUrl+"Controller/Action"
之类的东西从您自己的 javascript 文件访问您的资源。这有助于您将 View 与 javascript 分开,这是一件非常好的事情。
您不想混合使用标记和 javascript - 这是一个有很长的路要走的妥协。
关于javascript - 在开发和生产环境中获取基本 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8446016/