【发布时间】:2016-10-10 20:47:46
【问题描述】:
你好,我是新手程序员,刚接触到 asp.net mvc 和所有这些 js 东西。在我当前的 mvc 项目中,我有一个奇怪的错误,我只是不知道它为什么会发生。
对于控制器中的两个不同操作,我有两个几乎完全相同的 Ajax 调用。 GetPages 一个是成功的,另一个是给我一个 404。
///////////////////////////////////////////////////// ajax 调用//////////////////////////////////////// /////
//获取页面列表
GetPages = function (myCategory) {
var url = config.base + "/api/CMS/GetPagesSorted";
if (myCategory == null)
return;
$.ajax({
url: url,
type: "GET",
dataType: "JSON",
data: { categoryId: myCategory.Id },
success: function (data) {
// Clear pages and add new ones
self.pageList.removeAll();
self.pageList(data);
}
});
};
//获取标签列表
GetTabs = function (myPage) {
var url = config.base + "/api/CMS/GetTabsSorted";
if (myPage == null)
return;
$.ajax({
url: url,
type: "GET",
dataType: "JSON",
data: { pageId: myPage.Id },
success: function (data) {
// Clear tabs and add new ones
self.tabList.removeAll();
self.tabList(data);
}
});
};
//////////////////////////////////////控制器正在调用的操作/////////////////////////////////////// //////
public IHttpActionResult GetPagesSorted(int categoryId)
{
var pages = dbCMS.CMS_Page.Where(x => x.Category.Id == categoryId).Select(x => new
{
Name = x.Name,
OrderId = x.OrderId,
});
//sort the page order by OrderId
pages = pages.OrderBy(x => x.OrderId);
return Json(pages.ToList());
}
public IHttpActionResult GetTabsSorted(int pageId)
{
var tabs = dbCMS.CMS_Tab.Where(x => x.Page.Id == pageId).Select(x => new
{
Name = x.Name,
OrderId = x.OrderId,
});
//sort the page order by OrderId
tabs = tabs.OrderBy(x => x.OrderId);
return Json(tabs.ToList());
}
GetPages 函数的 url 是: http://localhost:54522/api/CMS/GetPagesSorted
GetTabs 函数的 url 是: http://localhost:54522/api/CMS/GetTabsSorted
这些实际上只是复制和粘贴的功能,仅更改了控制器操作名称。我真的不认为路由是错误的,因为其中一个调用正在进入我希望它执行的控制器和操作。
我真的很沮丧发现这个错误请帮助!提前谢谢你们!
【问题讨论】:
-
var url = "/api/CMS/GetPagesSorted";删除 config.base 它将自动附加到 post
-
config.base 目前只给我一个空字符串。所以 url 就是 /api/CMS/GetPagesSorted。问题是 /api/CMS/GetPagesSorted 有效,但 /api/CMS/GetTabsSorted 给了我 404
-
您可以在您的操作之前添加此数据注释
[HttpGet]。如果可以的话,你也可以添加你的路由配置 -
如果您只是在浏览器中导航到localhost:54522/api/CMS/GetTabsSorted会发生什么?
-
通过直接在浏览器中导航到 url,它给了我这个“在控制器 'CMS' 上找不到与请求匹配的操作。”这只是 404
标签: c# jquery ajax asp.net-mvc http-status-code-404