2011-03-15 31 views
0

我有一个静态网站(无数据库),并且难以理解如何为子类别设置路由。例如,我可以做以下其中的类别是控制器和化妆是动作:类别和子类别的mvc路由示例

  • 汽车/丰田
  • 汽车/ BWM

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

  • 汽车/丰田/凯美瑞
  • 汽车/丰田/花冠
  • 辆汽车/丰田/赛利卡

回答

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可以为空。然后,您可以执行您的操作。

+0

MVC3没有很好地处理具有多个可选参数的路由,其中​​一个应该有一个默认值。如果OP使用或升级到MVC3,这将有所帮助。当您尝试使用它来生成路线时,问题就出现了;它失败。 – tvanfosson 2011-03-15 19:49:07

+0

是的,这个make很可能有一个默认值。 – 2011-03-15 19:52:55

1

我大概有一年/品牌/型号去

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 
    } 
}