由于某种原因,我的应用程序没有正确路由到我的控制器方法。我的网页上有这样的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运行时,我无法解决为什么路由不会发布到我的控制器中的视图方法 - 任何想法?
答案 0 :(得分:0)
(假设路由调试器基于Phil Haack的debugger帖子)
如果您获得了404,那么我认为无法找到实际的视图页面。
答案 1 :(得分:0)
假设您还在应用程序中使用区域,并且实际从区域内调用RouteLink
,我认为您可能需要在routeValues对象中指定area=""
(您还需要指定控制器)。一般情况下,我认为在使用区域时,您需要在area="..."
部分中添加Routelink
部分。
我已经了解了有关RouteLink和Area的内容,但似乎找不到任何详细说明限制的参考资料。