加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – ASP.Net MVC路由策略

发布时间:2020-12-16 07:26:11 所属栏目:asp.Net 来源:网络整理
导读:我一直在玩ASP.Net MVC一段时间了.我发现最难解决的是路由表. 我发现大多数示例都保留了默认路由.我发现这会导致很多错误,其中默认路由重定向到HomeController,并且操作不存在.导致奇怪的错误消息,您可能会看到一个简单的404. 我最终选择了一个路由设置,在那
我一直在玩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",action = "SignIn"} );
        routes.MapRoute( "SignOut","SignOut",action = "SignOut"} );
        routes.MapRoute( "Authenticate","Authenticate",new { controller = "Authentication",action = "Authenticate" });

        routes.MapRoute("CatchAll","{*url}",new { controller = "Error",action = "Http404" });

我已经为系统中的每个操作指定了一条路线.并且最后要显示404.这是一个很好的方法,还是有一种更简单的方法使路由方案万无一失?

解决方法

如果这是您使用的默认路由:

routes.MapRoute(
            "Default","{controller}/{action}/{id}",new { controller = "Home",action = "Index",id = "" } 
        );

然后默认情况下将使用“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”将失败.

您可能已经知道我上面发布的所有内容.如果是这种情况,您会发布失败的网址,以便我们更好地提供帮助吗?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读