两种不同的通用路线类型

时间:2010-01-28 12:50:41

标签: asp.net-mvc asp.net-mvc-routing

我的ASP.NET MVC应用程序中有两个(目前为止)不同类型的路由,一个是:{controller} / {action} / {id},另一个是{controller} / {action} / {标题}

目前我需要定义这样的路线:

        routes.MapRoute (
            "Default_Title_Slug",                                       // Route name
            "product/details/{title}",                          // URL with parameters
            new { controller = "product", action = "details", title = "" }      // Parameter defaults
        );

        routes.MapRoute (
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "site", action = "index", id = "" }  // Parameter defaults
        );

请注意,第一个我不得不绑定到产品控制器,这似乎是我能让它工作的唯一方法......否则其他路线最终看起来像这样:

/controller/action?id=number

现在我需要添加另一个针对具有{title}段的另一个控制器的MapRoute调用...我不想为将来提出的每个特定条目创建新路由...是否有我可以创建的通用路由来映射/ controller / action / title,它们可以很好地与/ controller / action / id路由一起播放?

谢谢,
基隆

1 个答案:

答案 0 :(得分:4)

你可以使用路由约束来实现,例如正则表达式 - 非常类似的例子是here。类似的东西:

routes.MapRoute (
    "Default",
    "{controller}/{action}/{id}",
    new { controller = "site", action = "index", id = "" },
    new { id = @"\d+" }
);
routes.MapRoute (
    "Default_Title_Slug",
    "{controller}/{action}/{title}",
    new { controller = "product", action = "details", title = "" }
);