我有返回JSON数据的ASP.NET MVC操作。我的客户端使用jQuery的ajax函数检索此数据并将其显示在屏幕上。我在JavaScript中使用到 Controller Action 的绝对路径:

$.ajax({
    url: '/Home/Load',
    type: 'post',
    dataType: 'json'
})

问题是,在某些环境中,我们将在前面添加一个额外的虚拟目录,因此URL实际上是/Path/To/App/Home/Load。我想知道是否有一种写我的JavaScript的方法,以便在我每次部署时都不需要更新。我可以使用相对URL,例如../Home/Index,但偶尔我会移动我的JavaScript代码。使用MVC的 bundle 器时,事情也会变得更加棘手。如果~字符有效,那就太好了。

最佳答案

这是我的方法:

在主 View 中添加以下几行(此处使用Razor语法):

<script type="text/javascript">
    var appBaseUrl = "@Url.Content("~")";
</script>

然后在Javascript中:
$.ajax({
    url: appBaseUrl + 'Home/Load',
    type: 'post',
    dataType: 'json'
})

10-07 19:33
查看更多