asp.net Razor v3 jquery ajax帖子返回404未找到

时间:2017-12-11 12:39:30

标签: jquery asp.net ajax razor

我最近开始了一个Asp.net Razor v3项目。这是我第一次使用它(在我只使用MVC和Web Forms之前)

我正在努力获得一个由jquery ajax函数调用的代码。在Chrome上调试时,我看到该脚本返回POST 404(未找到)

$.ajax({
  type: "POST",
  url: "../App_Code/GlobalSitesController/GetSiteTable",
  data: "{'siteName': 'Some Site' , 'daysDiff': '0'}",
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function (response) {
  document.getElementById("siteTable").innerHTML = response.responseText;
  },
  failure: function (response) {
  document.getElementById("siteTable").innerHTML = "ERROR" + response.responseText;
  },
  error: function (response) {
  document.getElementById("siteTable").innerHTML = "ERROR" + response.responseText;
  }
});

public class GlobalSitesController : Controller
{
 [HttpPost]
 public string GetSiteTable(string siteName, int daysDiff)
 {
  return "some string";
 }
}

首先我注意到我的项目未包含System.Web.Mvc所以我通过Nugget添加了Microsoft.AspNet.Mvc

完整的Chrome错误是jquery-1.10.2.min.js:23 POST http://localhost:9997/App_Code/GlobalSitesController/GetSiteTable 404(未找到)。这是正确的URL,应该正常工作

1 个答案:

答案 0 :(得分:0)

事实证明,url位需要采用以下形式

url: '@url.Action("GetSiteTable", "GlobalSitesController")',

(url需要初始化,如下所示)

System.Web.Mvc.UrlHelper url = new System.Web.Mvc.UrlHelper(HttpContext.Current.Request.RequestContext);