Men*_*elt 4 asp.net-mvc routing
我一直在玩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" });
Run Code Online (Sandbox Code Playgroud)
我已经为系统中的每个操作指定了一条路线.并且最后要显示404.这是一个很好的方法,还是有一种更简单的方法使路由方案万无一失?
小智 7
如果这是您使用的默认路由:
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);
Run Code Online (Sandbox Code Playgroud)
然后默认情况下将使用"HomeController"和"Index"操作,除非您的URL另有说明.
例如:
" http://www.something.com/ "将使用Home控制器的Index操作,因为这些是默认控制器和操作.
" http://www.something.com/foo "将使用Foo控制器的Index操作,因为"Index"是默认操作.
" http://www.something.com/foo/bar "将使用Foo控制器的"bar"操作
" http://www.something.com/foo/bar/1 "将使用Foo控制器的"bar"操作,将"1"作为"id"参数传递
如果您没有"FooController",那么以" http://www.something.com/foo " 开头的任何内容都将失败.同样,如果您的FooController没有"Bar"操作,那么" http://www.something.com/foo/bar "将失败.
您可能已经知道我上面发布的所有内容.如果是这种情况,您会发布失败的网址,以便我们更好地提供帮助吗?
| 归档时间: |
|
| 查看次数: |
1369 次 |
| 最近记录: |