【发布时间】:2011-03-15 19:37:29
【问题描述】:
我有一个静态网站(没有数据库),我很难理解如何为子类别设置路线。例如,我可以执行以下操作,其中 category 是控制器,make 是动作:
- 汽车/丰田
- 汽车/bwm
但是当我添加另一个级别时,我不知道如何设置路线
- 汽车/丰田/凯美瑞
- 汽车/丰田/卡罗拉
- 汽车/丰田/celica
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-mvc-2 routing
我有一个静态网站(没有数据库),我很难理解如何为子类别设置路线。例如,我可以执行以下操作,其中 category 是控制器,make 是动作:
但是当我添加另一个级别时,我不知道如何设置路线
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-mvc-2 routing
我可能会选择年份/品牌/型号
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
}
}
【讨论】:
您应该可以接受如下所示的路线:
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 都可以为空。然后您就可以执行您的操作了。
【讨论】: