Javascript 在开发和生产环境中获取基本url

Javascript 在开发和生产环境中获取基本url,javascript,jquery,Javascript,Jquery,我正在使用MVC3并使用jquery构建一个a标记(链接)。问题是我只能让我的链接在prod或dev中工作,而不能同时在两者中工作。这是我的网站在生产中的url 这是我的开发url。 因此,我通过jquery创建了一个链接,如下所示 var actionCell = $('#itemlist').find(rowId).find(actionCellId); $('<a>Edit</a>').attr({ 'id': 'edit-' + response.id

我正在使用MVC3并使用jquery构建一个a标记(链接)。问题是我只能让我的链接在prod或dev中工作,而不能同时在两者中工作。这是我的网站在生产中的url

这是我的开发url。

因此,我通过jquery创建了一个链接,如下所示

  var actionCell = $('#itemlist').find(rowId).find(actionCellId);
  $('<a>Edit</a>').attr({ 'id': 'edit-' + response.id, 'href': '/Items/Edit/' + response.id }).appendTo(actionCell);
要么信息太少,要么信息太多。我知道我可以检查localhost并根据需要附加TVAP,但这似乎是一个黑客行为。另一个开发人员可能会使用ASP.NET VS dev服务器并获得一个URL,该URL将包含localhost,但不包含我得到的TVAP。
i、 e.-

这是我在我的_Layout.cshtml中经常做的事情:

<head>
    <!-- other stuff -->
    <script type="text/javascript">
        window.myProjectName = {
            baseUrl : '@Url.Content("~/")'
        };
    </script>
    <!-- other scripts -->
</head>

window.myProjectName={
baseUrl:“@Url.Content(“~/”)
};
然后,您可以始终使用
myProjectName.baseUrl+“Controller/Action”
之类的东西从您自己的javascript文件访问资源。这有助于将视图与javascript分开,这是一件非常好的事情


你不想混合使用标记和javascript,这是一个很好的折衷办法。

如果你的JS直接在你的视图中(而不是外部JS文件),你可以使用Razor将URL刷新到你的javascript中

// untested
var actionCell = $('#itemlist').find(rowId).find(actionCellId);
$('<a>Edit</a>').attr({ 
    'id': 'edit-' + response.id, 
    'href': '@Url.Action("Edit")/' + response.id
}).appendTo(actionCell);
//未经测试
var actionCell=$('#itemlist').find(rowId).find(actionCellId);
$('Edit').attr({
'id':'edit-'+response.id,
'href':'@Url.Action(“编辑”)/'+response.id
}).附加到(actionCell);

为什么您的API设置在开发中的项目和项目管理上?把它清理干净。使用相同的API,否则只会给代码添加潜在的错误。完成后,将URL更改为页面相对,而不是根相对,这样就完成了。好主意。我已经更新了我的_Layout.cshtml文件。效果很好。
 $(location).attr('host') ==> localhost
 $(location).attr('host') ==> http://localhost/TVAP/Items/Index
<head>
    <!-- other stuff -->
    <script type="text/javascript">
        window.myProjectName = {
            baseUrl : '@Url.Content("~/")'
        };
    </script>
    <!-- other scripts -->
</head>
// untested
var actionCell = $('#itemlist').find(rowId).find(actionCellId);
$('<a>Edit</a>').attr({ 
    'id': 'edit-' + response.id, 
    'href': '@Url.Action("Edit")/' + response.id
}).appendTo(actionCell);