自定义路由找不到控制器操作

时间:2010-06-02 18:36:45

标签: asp.net-mvc-2

由于某种原因,我的应用程序没有正确路由到我的控制器方法。我的网页上有这样的routelink -

<%= Html.RouteLink("View", "Blog", new { id=(item.BlogId), slug=(item.Slug) }) %> 

在global.asax.cs中,我有以下路线 -

    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "MoreBlogs",
        "Blog/Page/{page}",
        new { controller = "Blog", action = "Index" }
    );

    routes.MapRoute(
        "Blog",
        "Blog/View/{id}/{slug}",
        new { controller = "Blog", action = "View"}
    );

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Blog", action = "Index", id = UrlParameter.Optional } // Parameter defaults
    );

然后我有一个BlogController类,它有一个方法 -

   public ActionResult View(int id, string slug)
    {

       ... etc.
    }

我在View方法的第一行放了一个断点,但它根本没有被击中。我检查了一个路由调试器,格式为localhost / Blog / View / 1 / test,它与我的自定义路由匹配。所有我得到的都是404运行时,我无法解决为什么路由不会发布到我的控制器中的视图方法 - 任何想法?

2 个答案:

答案 0 :(得分:0)

(假设路由调试器基于Phil Haack的debugger帖子)

如果您获得了404,那么我认为无法找到实际的视图页面。

答案 1 :(得分:0)

假设您还在应用程序中使用区域,并且实际从区域内调用RouteLink,我认为您可能需要在routeValues对象中指定area=""(您还需要指定控制器)。一般情况下,我认为在使用区域时,您需要在area="..."部分中添加Routelink部分。

我已经了解了有关RouteLink和Area的内容,但似乎找不到任何详细说明限制的参考资料。