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

时间:2020-03-05 18:40:27  来源:igfitidea点击:

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

导航路径示例:

首页>商店>产品>家用>厨房>炊具>炊具>不粘锅

典型(我认为)的MVC URL:
http://example.com/products/category/NonstickCooksets

所需网址:
http://example.com/shop/products/household/kitchen/cookware/cooksets/nonstick

我可以这样做吗?

解决方案

回答

MVC路由使我们几乎可以定义所需的任何结构,只需要定义每个部分在语义上的含义即可。我们可以使用诸如"商店/产品"之类的"硬编码"位,然后将其余部分定义为变量" {category} / {subcategory} / {speciality}"等。

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

尽管默认路由是简单的Controller,Action和Id类型的设置,但这当然不是我们可以做的事情。

回答

Zack,如果我理解正确,那么我们想要无限的子类别深度。没什么大不了的,因为MVC Preview 3(我认为是3或者4)已经解决了。

只需定义一条路线即可

" {controller} / {action} / {* categoryPath}"

用于以下网址:

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

我们应该有一个带有Products动作的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();
    }