我的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路由一起播放?
谢谢,
基隆
答案 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 = "" }
);