0
我有一个静态网站(无数据库),并且难以理解如何为子类别设置路由。例如,我可以做以下其中的类别是控制器和化妆是动作:类别和子类别的mvc路由示例
- 汽车/丰田
- 汽车/ BWM
,但是当我添加另一个级别我不“知道如何设置路由
- 汽车/丰田/凯美瑞
- 汽车/丰田/花冠
- 辆汽车/丰田/赛利卡
我有一个静态网站(无数据库),并且难以理解如何为子类别设置路由。例如,我可以做以下其中的类别是控制器和化妆是动作:类别和子类别的mvc路由示例
,但是当我添加另一个级别我不“知道如何设置路由
你应该确定一个路线看起来像这样:
routes.MapRoute(
"CarsRoute",
"cars/{make}/{model}",
new {
controller = "Cars",
action = "Display",
make = UrlParameter.Optional,
model = UrlParameter.Optional
});
这将映射到与签名的操作方法:
public ActionResult Display(string make, string model)
如果双方make
和model
可以为空。然后,您可以执行您的操作。
我大概有一年/品牌/型号去
routes.MapRoute(
"Default",
"{controller}/{year}/{make}/{model}"
new
{
controller = "car",
action = "search",
year = DateTime.Today.Year,
model = "all",
make = Url.OptionalParameter
}
);
(你可能要在一年的约束,迫使它是一个合理的值?)
与像
控制器public class CarController
{
public ActionResult Search(int year, string make, string model)
{
// handle model "all" and empty "make" specially
}
}
MVC3没有很好地处理具有多个可选参数的路由,其中一个应该有一个默认值。如果OP使用或升级到MVC3,这将有所帮助。当您尝试使用它来生成路线时,问题就出现了;它失败。 – tvanfosson 2011-03-15 19:49:07
是的,这个make很可能有一个默认值。 – 2011-03-15 19:52:55