1

我的路线注册如下:

    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。任何想法?

谢谢

4

3 回答 3

1

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

谢谢大家的时间。

于 2013-03-20T00:28:26.970 回答
0

眼下

http://hspot.ca/course/list 

火柴

True    course/list controller = course, action = list

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

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

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

于 2013-03-20T00:01:10.293 回答
0

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

像这样构造你的项目:

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

您应该以更少的麻烦得到您正在寻找的东西。

祝你好运!!

于 2013-03-20T00:47:09.350 回答