【问题标题】:ASP.NET MVC route not matched [duplicate]ASP.NET MVC 路由不匹配 [重复]
【发布时间】:2013-03-19 23:20:50
【问题描述】:

我的路线注册如下:

    routes.MapRoute(
        "course_list",
        "course/list",
        new { controller = "course", action = "list" }
    );

    routes.MapRoute(
        "course_view",
        "course/view/{id}",
        new { controller = "course", action = "view", id = UrlParameter.Optional }
    );

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );

我可以浏览到 /course/view/87 并匹配正确的路线。当我访问 /course/list 页面并单击该页面上指向 /course/view/87 的链接时,我得到一个 404: /course/list not found。有什么想法吗?

谢谢

【问题讨论】:

  • 这里是一个页面链接,该页面有一个按钮作为链接:hspot.ca/course/list
  • 好的,我看到呈现的 url 是什么。请添加您用于创建它的帮助代码。
  • 点击该页面上的“详细信息”按钮,路由调试器将显示错误
  • 解释它是如何解决的是什么意思?
  • 将创建此按钮链接的代码添加到您的示例中。我看到它指向的 url。 course/view/s 明显错误,但对您的路线设置者有效。

标签: asp.net-mvc asp.net-mvc-routing


【解决方案1】:

按钮元素被视为提交按钮(即:如果未设置默认类型属性,则 type="submit")。因此,浏览器发起了一个 post 请求,但没有满足任何路由,因为我的所有操作都是 get(s)。

感谢大家的宝贵时间。

【讨论】:

  • 很好的发现。对未来的建议,将您的用户名更改为令人难忘的名称。在 SO 上露面。祝你好运。
【解决方案2】:

目前

http://hspot.ca/course/list 

匹配

True    course/list controller = course, action = list

但提供 404。(这与您的写作不同,您说此页面有效)。

当找不到可以处理路由及其参数的控制器/动作组合时,会返回此类 404。确保你有一个

CourseController 有一个没有参数的 List() 方法

【讨论】:

  • 他确实有一个列表方法。我可以导航到它
  • ...并且该操作没有参数。所以从技术上讲,它应该是匹配的。
  • 现在我也可以了,我认为正在建设中。是一个猜测,当我看到 404 并且路由匹配时,它主要是这样的绑定问题。要调试绑定步骤,您可以创建一个虚拟绑定器或使用 mvc4 源,两者都会产生一些工作。有没有像 HttpPost 属性之类的过滤器?
【解决方案3】:

我认为你有点过于复杂了。你真的根本不需要前两条路线,单独的默认路线就可以了。另外,我认为将您的操作命名为“视图”是一个坏主意,还有其他选择吗?就是自找麻烦。

像这样构建您的项目:

Controllers/Course/CourseController.List.cs - Partial with List() method
Controllers/Course/CourseController.View.cs - Partial with View(string id) method

Views/Course/List.cshtml
Views/Course/View.cshtml

你应该得到你正在寻找的东西,而不是麻烦。

祝你好运!

【讨论】:

  • 我正在添加它们,因为没有任何匹配项......当然,一旦我发现按钮问题,就将它们全部删除。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-08
  • 2018-11-01
  • 1970-01-01
  • 2012-07-13
  • 2017-10-08
  • 2017-07-12
相关资源
最近更新 更多