我需要让我的老板应用程序中的网址如下:
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路线的模式而不破坏我有控制器/ Action / Param的常规路线的能力吗?
全神贯注,无法找到任何方向。
答案 0 :(得分: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}
答案 1 :(得分: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});