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

标签 ajax asp.net-mvc url-routing asp.net-mvc-routing

我的应用程序位于服务器上一个单独的虚拟目录下。要访问我的 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/

相关文章:

html - $.ajax 不保存回车符

asp.net-mvc - 一个模型可以通过多个编辑器模板传递吗?

javascript - 尝试为 jQuery AJAX 请求添加延迟

c# - 自定义 map 路线在 asp.net mvc 中不起作用

sql-server - SQL Server 连接字符串问题

php - 使用 CodeIgniter 中 valid_email 方法的正则表达式路由包含电子邮件的 URL 以进行电子邮件验证

asp.net-mvc - ASP.NET MVC 5 路由,在 URL 中隐藏数据

php - Laravel 8 路由到 Controller 。 SEO 友好的 URL 结构

php - 简单的Python房间聊天服务器

javascript - 如何让浏览器记住通过ajax和jquery生成的多选项卡分页内容中显示的最后一页?