ASP.net MVC 5 路由:加载基本 url 时出现 ajax 错误,但在最后添加 home/Index 时有效
Posted
技术标签:
【中文标题】ASP.net MVC 5 路由:加载基本 url 时出现 ajax 错误,但在最后添加 home/Index 时有效【英文标题】:ASP.net MVC 5 routing: ajax error on loading base url but works when adding home/Index on the end 【发布时间】:2019-06-25 20:33:28 【问题描述】:如果最后没有 /Home,我的项目的基本 url 将无法工作,它会返回一个 ajax 错误。如何确保在没有 Home/Index 的情况下输入基本 url,它会在不返回错误的情况下工作?
我可以看到在服务器端 GetTaskLog 正在返回 404 not found 错误。 GetTaskLog 是我的家庭控制器中的一个函数,用于从数据库中检索数据。当我将 /home 添加到 url 时,GetTaskLog 工作正常。它检索数据并且没有错误。
public static void RegisterRoutes(RouteCollection routes)
routes.IgnoreRoute("resource.axd/*pathInfo");
routes.MapRoute(
name: "Default",
url: "controller/action/id",
defaults: new controller = "Home", action = "Index", id = UrlParameter.Optional
);
阿贾克斯:
"ajax":
"url": "../Home/GetTaskLog",
"type": 'POST',
"content-type": "application/json; charset=utf-8",
"processData": false,
"dataType": "json",
"headers": "headers",
"data": "window.JSON.stringify(obj)",
$('input[name=__RequestVerificationToken]').val() , “传统”:是的, “dataSrc”:函数(数据) 返回 JSON.parse(data); , ,
【问题讨论】:
请指定您调用 AJAX 请求的错误详细信息和库,因为 AJAX 似乎是从DataTables
或使用 "ajax"
作为选项参数的类似库请求的。
错误只是说 ajax 错误,没有进一步的细节。但是我可以看到在服务器端 GetTaskLog 正在返回 404 not found 错误。 GetTaskLog 是我的家庭控制器中的一个函数,用于从数据库中检索数据。当我将 /home 添加到 url 时,GetTaskLog 工作正常。它检索数据并且没有错误
【参考方案1】:
route.MapRoute 中的默认值表示如果应用程序在 url 上没有 controller/action/id 之类的内容,它将返回到 Home/Index。 所以你需要更改默认参数
【讨论】:
将默认值更改为空字符串还是干脆去掉默认值行? @JoeJoeJoe,您可以去掉默认行,在这种情况下,如果找不到 url,您的应用程序将返回 404 错误。但是您可以将默认值更改为任何其他 url,例如 MyApp/ShowNotFound 如果您希望人们被重定向到此 url,以防他们请求不存在的 url 对不起,我不明白。我不确定我应该怎么做才能使基本 url 正常工作而不在末尾添加 home/index。基本网址确实打开了默认页面,但我收到了一个 ajax 错误。 您不需要每次都使用 Home/Index。创建新的Controller,让它成为BookController。在 BookController 动作方法 Add 中创建并在 Add 中添加一些逻辑;例如 Add 可以返回字符串“hello”。现在我们有路线预订/添加;在浏览器中打开这个网址,你会看到“你好”这个词。部分“控制器”为了美而切入 url(平台自动执行)。【参考方案2】:我的问题的解决方案是将ajax url更改为:
"ajax":
"url": "/WTM/Home/GetTaskLog"
【讨论】:
以上是关于ASP.net MVC 5 路由:加载基本 url 时出现 ajax 错误,但在最后添加 home/Index 时有效的主要内容,如果未能解决你的问题,请参考以下文章
asp.net core mvc razor page css未在特定路由上加载