我一直在玩ASP.Net MVC一段时间了。我发现最困难的事情是路由表。ASP.Net MVC路由策略
我发现大多数例子都保留了默认路由。我发现这导致了很多错误,其中默认路由重定向到HomeController并且不存在的操作。导致奇怪的错误信息,你会看到一个简单的404。
我最终解决了路由设置,我明确定义了所有控制器/操作组合,我希望允许在最终重新定位到所有控制器/操作组合一个显示明智的错误信息的404页面。
我在这里错过了什么吗?或者这确实是一种做事的好方法?
看着我得到的答案我想我最好澄清一下这个问题。
我试图欺骗我正在建设的网站的路由方案。我注意到,当我在默认的{controller}/{action}/{id}路由中,我想要显示404错误的所有类型的URL实际上被路由到HomeController并导致一些不可靠的错误消息。
我有点困惑,因为大多数代码示例只是保留在默认路由中。是否有原因存在或可以将其删除?
我用现在的方案看起来有点像这样
routes.MapRoute("About", "About", new {controller = "Page", action = "About"});
routes.MapRoute("SignIn", "SignIn", new {controller = "Page", action = "SignIn"});
routes.MapRoute("SignOut", "SignOut", new {controller = "Page", action = "SignOut"});
routes.MapRoute("Authenticate", "Authenticate", new { controller = "Authentication", action = "Authenticate" });
routes.MapRoute("CatchAll", "{*url}", new { controller = "Error", action = "Http404" });
我已经得到了系统中的每一个动作所指定的路线。最后还要显示一个404。这是一个很好的方法来做到这一点,或者有一种更简单的方法来使路由方案更加简单吗?
我在同一条船上来的。我认为如果默认路线无法找到控制器+操作,则所有捕获都会起作用。相反,控制器工厂会抛出异常。你还在走的是明确的路线吗? – dotjoe 2010-04-01 16:26:08