我可以通过Sitemap生成ASP.NET MVC路由吗?

问题描述:

我想学习即将开展的项目的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

我能做到这一点?

扎克,如果我理解正确的,你想要的子类别的无限深度。没有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(); 
    } 

的MVC路由,您可以定义几乎任何你想要的结构,你只需要定义各构件的平均语义。您可以拥有“硬编码”位,例如“商店/产品”,然后将其余部分定义为变量“{category}/{subcategory}/{special}”等。

您也可以定义几条全部映射到相同终点的路线(如果您喜欢的话)。基本上,当一个URL进入你的MVC应用程序时,它会遍历路由表,直到找到匹配的模式,填充变量并将请求传递给适当的控制器进行处理。

虽然默认路由是一个简单的控制器,动作,身份证这种设置的,这肯定不是你可以做什么的程度。