如何在MVC 4中路由动态控制器/动作模式 - 为ASP.net MVC 4路由

时间:2012-08-12 17:04:44

标签: asp.net-mvc asp.net-mvc-routing asp.net-mvc-4

我希望这是在MVC 4中编写路线的更好方法,并希望得到一些反馈。

如果下面的路由模式是在MVC 4中执行此操作的最佳方式,您能告诉我吗?

我的应用程序需要以下列格式显示网址。

http://domain.com/777-777-7777-777-7777/Page1

http://domain.com/777-777-7777-777-7777/Page2

777-777-7777-777-7777是一个帐号。 PageX是报告页码。

我试图避免在我的项目中丢弃其他控制器路由。 以下是我尝试但需要反馈,如果这将废弃未来的控制器。

报告编号加页面路线

routes.MapRoute( 
"Report", // Route name 
"{AccountNumber}/{ReportPage}",  
new { controller = "Report", action = "Navigate", AccountNumber =     UrlParameter.Optional, ReportPage = UrlParameter.Optional});

未来控制器我不想丢弃。

routes.MapRoute( 
"FutureController", // Route name 
"FutureController/{action}/{id}",  
new { controller = "FutureController",id= UrlParameter.Optional});

感谢任何反馈。

1 个答案:

答案 0 :(得分:0)

我相信您的路线没问题。它不会打破目前的设置。编写路径时唯一要记住的是,您首先放置更多特定路径,因为它们按顺序处理,并且第一个匹配路由由url引擎选取。但我必须说,您的ReportPage参数将包含page1page1之类的值,而不是数字1或2.我看到有人编写规则,其中只有数字部分会在行动中收到结果。据我所知,它就像是

routes.MapRoute( 
"Report", // Route name 
"{AccountNumber}/page{ReportPage}",  
new { controller = "Report", action = "Navigate", AccountNumber =     UrlParameter.Optional, ReportPage = UrlParameter.Optional},new{ReportPage = "\d+"});

这样您就会有http://domain.com/account/page1之类的网址,但在操作方法中,您会收到ReportPage参数的数值。但是,当页码不存在时,它将不匹配。在这种情况下,您可以添加另一条路线,例如回答this question

时建议的人