mvc类别和子类别的路由示例

时间:2011-03-15 19:37:30

标签: asp.net asp.net-mvc asp.net-mvc-2 routing

我有一个静态网站(没有数据库),我很难理解如何设置子类别的路线。例如,我可以执行以下操作,其中类别是控制器,而make是操作:

  • 汽车/丰田
  • 汽车/ BWM

但是当我添加另一个级别时,我不知道如何设置路径

  • 汽车/丰田/凯美
  • 汽车/丰田/花冠
  • 汽车/丰田/切利卡

2 个答案:

答案 0 :(得分:1)

我可能会选择year / 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
    }
}

答案 1 :(得分:0)

你应该对这样的路线感到满意:

routes.MapRoute(
   "CarsRoute",
   "cars/{make}/{model}",
   new { 
      controller = "Cars", 
      action = "Display", 
      make = UrlParameter.Optional, 
      model = UrlParameter.Optional 
   });

这将映射到具有签名的操作方法:

public ActionResult Display(string make, string model)

makemodel都可以为空。然后,您可以执行操作。