【发布时间】:2010-11-04 12:43:18
【问题描述】:
我玩 ASP.Net MVC 已经有一段时间了。我发现最难做的就是路由表。
我发现大多数示例都保留了默认路由。我发现这会导致很多错误,默认路由重定向到 HomeController 的操作不存在。导致奇怪的错误消息,您希望看到一个简单的 404。
我最终选择了一个路由设置,在该设置中,我明确定义了我希望允许的所有控制器/操作组合,并在最后使用一个 catch-all 重定向到显示合理错误消息的 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。这是执行此操作的好方法还是有更简单的方法可以使路由方案万无一失?
【问题讨论】:
-
我在同一条船上。我认为如果默认路由找不到控制器+动作,catch all 会起作用。相反,控制器工厂会引发异常。你还在走明确的路线吗?
标签: asp.net-mvc routing