1

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

您能否告诉我下面的路由模式是否是 MVC 4 中最好的方法?

我有一个应用程序需要以以下格式显示 url。

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});

任何反馈表示赞赏。

4

1 回答 1

0

我相信你的路线还可以。它不会破坏当前的设置。编写路由时唯一要记住的是,您首先放置更具体的路由,因为它们是按顺序处理的,并且 url 引擎会选择第一个匹配的路由。但是,我必须说您的ReportPage参数将包含像page1andpage1而不是数字 1 或 2 之类的值。我见过有人编写规则,其中只有数字部分会在操作结果中收到。据我所知,它就像

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

这样,您将拥有类似的 url,http://domain.com/account/page1但在操作方法中,您将收到参数的数值ReportPage。但是,当页码不存在时,它将不匹配。对于这种情况,您可以添加另一条路线,例如在回答此问题时推荐的人

于 2012-08-12T17:26:53.690 回答