jQuery Ajax : Reference MVC controller url from App root

标签 jquery asp.net-mvc url qunit

我有一个从 http://localhost/myappname 运行的 ASP.NET MVC Web 应用程序。在 jQuery 中,我进行 jQuery $.ajax() 调用以根据某些用户操作返回部分 View 。我通常从包含我通过 Ajax 调用的函数的同一 Controller 中的 View 调用此函数。例如,我的 Home Controller 中的 View 具有以下功能(效果很好):

function loadMyPartialView() {
    $.ajax({
      type: 'GET',
      url: 'Home/GetNavigationTreePV/',
      success: function (data) { onSuccess(data); },
      error: function (errorData) { onError(errorData); }
    });
    return true;
}

上面的 url 被解析为 http://localhost/myappname/Home/GetNavigationTreePV 并正确返回部分 View 。

现在,我尝试使用 qUint 对我的函数进行单元测试。在此测试用例中,我只想验证是否已到达函数末尾并返回 true。我创建了一个 QUNIT Controller 和相应的 View (它加载我的单元测试 JavaScript 文件)。从包含单元测试的 test.js 文件中,我尝试调用主视图中的相同函数,如上面的函数。但是,由于我现在用完了 QUNIT Controller ,因此 URL 被解析为 http://localhost/myappname/qunit/Home/GetNavigationTreePV。

我尝试将我的ajax请求的url更改为/Home/GetNavigationTreePV/(带有前面的正斜杠),但是当我这样做时,我得到以下urlhttp://localhost/myappname/Home/GetNavigationTreePV.

所以,要明确的是,我试图以一种始终从 MVC 应用程序的根开始的方式编写我的 ajax 请求,然后附加 $.ajax() 函数中给定的 url 参数。

有没有简单的方法可以做到这一点?我是否以一种奇怪的方式处理这个问题?

最佳答案

我认为在您的 MVC View 页面中您需要 @Url.Action

   function loadMyPartialView() {
        $.ajax({
          type: 'GET',
          url: '@Url.Action("GetNavigationTreePV", "Home")',
          success: function (data) { onSuccess(data); },
          error: function (errorData) { onError(errorData); }
        });
        return true;
    }

或者您可以使用@Url.Content

   function loadMyPartialView() {
        $.ajax({
          type: 'GET',
          url: '@Url.Content("~/home/GetNavigationTreePV")',
          success: function (data) { onSuccess(data); },
          error: function (errorData) { onError(errorData); }
        });
        return true;
    }

如果这是在 .js 文件中,您可以传入 Url,如

loadMyPartialView('@Url.Action("GetNavigationTreePV", "Home")')

关于jQuery Ajax : Reference MVC controller url from App root,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7713859/

相关文章:

c# - 使用正则表达式在 Controller 中进行验证

android - 下载多张图片 - 可以下载所有图片,但图片都是一样的

php - 从 URL 获取域

url - 使用pdfLaTeX在BibTeX中包装网址(忽略边距)

javascript - 如何克隆大量 HTML 同时更改属性值

javascript - 当选择框值 onchange 时的 JQuery 函数将禁用的 attr 添加到 input[text],

jquery - 使用最接近焦点的最接近文本框

c# - ASP.NET Core 2.0 Web 应用部署和托管

jquery - 表格滚动条在 chrome 中被锁定

c# - 在 ASP.NET MVC 中的 UnitOfWork 中转换 DbContext