我的应用程序位于服务器上一个单独的虚拟目录下。要访问我的 ASP.NET MVC 应用程序,用户必须转到:
http://server-dev/superApp
我遇到 Ajax/Json 服务器请求忽略“superApp”目录部分的问题。每当发出 Ajax 请求时,Fiddler 都会显示 404,因为例如 http://server-dev/superApp/User/GetUsersJson
http://server-dev/User/GetUsersJson
被调用(注意缺少的 superApp 名称)。
Ajax 请求示例:
function GetUsers(id) {
$.ajax({
url: "/User/GetUsersJson/",
data:{ id: id},
datatype: 'json',
type:'post',
success: function (result) {
////Do stuff with returned result
}
});
}
注册路线:
r.Match("User/GetUsersJson", "User", "GetUsersJson");
我应该在哪里查看以及我可以更改什么以确保我的应用程序虚拟文件夹始终包含在所有 URL 请求中?
附注请注意,所有 Javascript/Ajax 逻辑都保存在单独的 .js 文件中,因此没有可用的 RAZOR 语法。
最佳答案
您是否尝试过使用 HTML 辅助方法?
url: "@Url.ACtion("GetUsersJson","User)"
编辑:根据评论
您可以使用 HTML Helper 方法获取路径名称并将其保存在全局变量中并在外部 javascript 文件中访问它
在 View 中
<script type="text/javascript>
var globalGetJSONPath='@Url.ACtion("GetUsersJson","User)';
</script>
现在你可以像这样在外部文件中使用它了
$.ajax({
url: globalGetJSONPath,
data:{ id: id},
//remaining items....
});
关于Ajax 请求忽略 ASP.NET MVC 应用程序的 URL 中的虚拟应用程序子文件夹名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11637185/