首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ajax请求忽略ASP.NET MVC应用程序URL中的虚拟应用程序子文件夹名称。

Ajax请求忽略ASP.NET MVC应用程序URL中的虚拟应用程序子文件夹名称。
EN

Stack Overflow用户
提问于 2012-07-25 02:37:07
回答 3查看 2.4K关注 0票数 3

我的应用程序位于服务器上的一个单独的虚拟目录下。要访问我的ASP.NET MVC应用程序,用户必须访问:

代码语言:javascript
复制
http://server-dev/superApp

我对忽略"superApp“目录部分的Ajax/Json服务器请求有一个问题。每当发出Ajax请求时,Fiddler都会显示404,因为调用的是http://server-dev/User/GetUsersJson,而不是http://server-dev/superApp/User/GetUsersJson (注意缺少的superApp名称)。

Ajax请求示例:

代码语言:javascript
复制
function GetUsers(id) {
    $.ajax({
        url: "/User/GetUsersJson/",
        data:{ id: id},
        datatype: 'json',
        type:'post',
        success: function (result) {
            ////Do stuff with returned result
        }        
    });      
}

已注册路由:

代码语言:javascript
复制
r.Match("User/GetUsersJson", "User", "GetUsersJson");

我应该在哪里查看?我可以更改哪些内容以确保我的应用程序虚拟文件夹始终包含在所有URL请求中?

附注:请注意,所有Javascript/Ajax逻辑都保存在单独的.js文件中,因此没有剃刀语法可用。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-25 02:39:23

您是否尝试过使用HTML辅助方法?

代码语言:javascript
复制
url: "@Url.ACtion("GetUsersJson","User)"

编辑:根据评论

您可以使用HTML Helper方法获取路径名,并将其保存在全局变量中,然后在外部javascript文件中进行访问

在视图中

代码语言:javascript
复制
<script type="text/javascript>
  var globalGetJSONPath='@Url.ACtion("GetUsersJson","User)';
</script>

现在您可以在外部文件中使用它,如下所示

代码语言:javascript
复制
 $.ajax({
        url: globalGetJSONPath,
        data:{ id: id},
        //remaining items....

  });
票数 4
EN

Stack Overflow用户

发布于 2012-07-25 02:40:48

我通过将变量传递给包含hostname+vdir的js解决了这个问题。因为繁重的js生成。

在其他情况下,Shyju的答案是解决这个问题的最好方法。

票数 1
EN

Stack Overflow用户

发布于 2012-07-25 02:43:09

如果不生成一些服务器端代码,就无法做到这一点。最简单的事情是定义保存应用程序根目录的全局变量(对不起),并在母版页中的某个位置对其进行初始化。

路由urls的Javascript生成一直是asp.net mvc中最复杂的部分之一。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11637185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档