2008-08-18 76 views
3

我想學習即將開展的項目的ASP.NET MVC框架。我可以使用高級路由創建基於sitemap hiearachy的長URL嗎?我可以通過Sitemap生成ASP.NET MVC路由嗎?

實例導航路徑:
家>商店>產品>家用品>廚房>炊具> Cooksets>不粘

典型的(我認爲)MVC網址:
http://example.com/products/category/NonstickCooksets

所需的URL:
http://example.com/shop/products/household/kitchen/cookware/cooksets/nonstick

我能做到這一點?

回答

9

扎克,如果我理解正確的,你想要的子類別的無限深度。沒有biggie,因爲MVC Preview 3(我認爲3或4)已經解決了。

只要定義喜歡的路線

「{控制器}/{行動}/{* categoryPath}」

一個URL,例如:

http://example.com/shop/products/household/kitchen/cookware/cooksets/nonstick

你應該有一個ShopController用產品行動:

public class ShopController : Controller 
{ 
... 
    public ActionResult Products(string categoryPath) 
    { 
     // the categoryPath value would be 
     // "household/kitchen/cookware/cooksets/nonstick". Process it (for ex. split it) 
     // and then decide what you do.. 
     return View(); 
    } 
2

的MVC路由,您可以定義幾乎任何你想要的結構,你只需要定義各構件的平均語義。您可以擁有「硬編碼」位,例如「商店/產品」,然後將其餘部分定義爲變量「{category}/{subcategory}/{special}」等。

您也可以定義幾條全部映射到相同終點的路線(如果您喜歡的話)。基本上,當一個URL進入你的MVC應用程序時,它會遍歷路由表,直到找到匹配的模式,填充變量並將請求傳遞給適當的控制器進行處理。

雖然默認路由是一個簡單的控制器,動作,身份證這種設置的,這肯定不是你可以做什麼的程度。