1

我需要让我的老板应用程序中的网址看起来像:

http://domain.com/Texas/Dallas/72701

但是,我不想为每个州编写一个控制器,为每个城市编写一个动作。

routes.MapRoute(
"DrillDown", // Route name
"{controller}/{action}/{ZipId}", 
new { controller = "State", action = "City", ZipId = UrlParameter.Optional} // Parameter     defaults

有人可以帮我为接受 State/City/Zip 的路线编写一个模式,而不会破坏我使用 controller/Action/Param 拥有常规路线的能力吗?

环顾四周,找不到任何方向。

4

2 回答 2

1

如果您能够在域路径中再添加一个路径段,则可以很容易地使其工作

routes.MapRoute(
"DrillDown", // Route name
"Location/{State}/{City}/{ZipId}", 
new { controller = "Location",
      action = "DrillDownAction", 
      State= UrlParameter.Optional, 
      City = UrlParameter.Optional,
      ZipId = UrlParameter.Optional
}

这将为您提供以下形式的网址:http: //www.domain.com/Location/ {State}/{City}/{ZipId}

于 2012-05-30T23:06:55.963 回答
0

这可以通过为每个状态添加路由来实现:

routes.MapRoute( 
"TexasDrillDown", // Route name 
"Texas/{City}/{ZipId}",  
new { controller = "DrillDownController", action = "DrillDownAction", ZipId = UrlParameter.Optional});

但是,如果您的其他控制器比状态少,您可能更愿意将 DrillDown 设置为默认路由并手动映射其他控制器,如下所示:

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

routes.MapRoute( 
"DrillDown", // Route name 
"{State}/{City}/{ZipId}",  
new { controller = "DrillDownController", action = "DrillDownAction", ZipId = UrlParameter.Optional});
于 2012-05-30T22:59:18.263 回答