我的应用程序位于服务器上的一个单独的虚拟目录下。要访问我的ASP.NET MVC应用程序,用户必须访问:
http://server-dev/superApp我对忽略"superApp“目录部分的Ajax/Json服务器请求有一个问题。每当发出Ajax请求时,Fiddler都会显示404,因为调用的是http://server-dev/User/GetUsersJson,而不是http://server-dev/superApp/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文件中,因此没有剃刀语法可用。
发布于 2012-07-25 02:39:23
您是否尝试过使用HTML辅助方法?
url: "@Url.ACtion("GetUsersJson","User)"编辑:根据评论
您可以使用HTML Helper方法获取路径名,并将其保存在全局变量中,然后在外部javascript文件中进行访问
在视图中
<script type="text/javascript>
var globalGetJSONPath='@Url.ACtion("GetUsersJson","User)';
</script>现在您可以在外部文件中使用它,如下所示
$.ajax({
url: globalGetJSONPath,
data:{ id: id},
//remaining items....
});发布于 2012-07-25 02:40:48
我通过将变量传递给包含hostname+vdir的js解决了这个问题。因为繁重的js生成。
在其他情况下,Shyju的答案是解决这个问题的最好方法。
发布于 2012-07-25 02:43:09
如果不生成一些服务器端代码,就无法做到这一点。最简单的事情是定义保存应用程序根目录的全局变量(对不起),并在母版页中的某个位置对其进行初始化。
路由urls的Javascript生成一直是asp.net mvc中最复杂的部分之一。
https://stackoverflow.com/questions/11637185
复制相似问题