ASP.NET MVC路由不匹配

时间:2013-03-19 23:20:51

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

我的路线注册如下:

    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。有什么想法吗?

谢谢

3 个答案:

答案 0 :(得分:1)

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

谢谢大家的时间。

答案 1 :(得分:0)

目前

http://hspot.ca/course/list 

匹配

True    course/list controller = course, action = list

但是提供了404.(这与你的写作不同,你说这个页面有效)。

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

CourseController ,其中 List()方法没有参数。

答案 2 :(得分:0)

我认为你有点过分复杂了。你根本不需要前两个路线,仅靠dafault就可以了。此外,我认为将动作命名为“视图”是一个坏主意,是否还有其他选择?这只是在寻找麻烦。

像这样构建你的项目:

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

你应该以更少的麻烦得到你想要的东西。

祝你好运!!