2011-03-15 33 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 
    } 
}