我可以从站点地图生成ASP.NET MVC路由吗?

我可以从站点地图生成ASP.NET MVC路由吗?,asp.net,asp.net-mvc,url,routing,sitemap,Asp.net,Asp.net Mvc,Url,Routing,Sitemap,我正在考虑为即将到来的项目学习ASP.netmvc框架。我可以使用高级路由根据站点地图层次结构创建长URL吗 导航路径示例: 家居>商店>产品>家居>厨房>厨具>厨具>不粘锅 典型的(我认为)MVC URL: 所需URL: 我可以这样做吗?MVC路由允许您定义几乎任何您想要的结构,您只需要定义每个部分在语义上的含义。您可以使用“硬编码”的位,如“shop/products”,然后将其余的定义为变量“{category}/{subcategory}/{speciality}”,等等 如果愿意,

我正在考虑为即将到来的项目学习
ASP.netmvc
框架。我可以使用高级路由根据站点地图层次结构创建长URL吗

导航路径示例:

家居>商店>产品>家居>厨房>厨具>厨具>不粘锅

典型的(我认为)MVC URL:

所需URL:


我可以这样做吗?

MVC路由允许您定义几乎任何您想要的结构,您只需要定义每个部分在语义上的含义。您可以使用“硬编码”的位,如“shop/products”,然后将其余的定义为变量“{category}/{subcategory}/{speciality}”,等等

如果愿意,还可以定义多条路线,这些路线都映射到同一端点。基本上,当URL进入MVC应用程序时,它会遍历路由表,直到找到匹配的模式,填充变量并将请求传递给相应的控制器进行处理


虽然默认路线是一种简单的控制器、操作、Id设置,但这肯定不是您所能做的。

扎克,如果我理解正确,您希望子类别的深度不受限制。没什么大不了的,自从MVC预览3(我认为是3或4)以来,这个问题已经解决了

只需定义一条路径,如

“{controller}/{action}/{*categoryPath}”

对于url,例如:

您应该有一个带有产品操作的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();
    }