我有相当大的ASP.NET MVC 2应用程序(多个区域,每个都有自己的路由注册),使用这样的路由:
/ Item / 12345 / Detail - 其中12345是项目的ID。整个应用程序只依赖于数字ID。但现在有一个要求(seo stuff)使URL看起来像这样:
/项目/项目唯一字符串名称/详情
我希望在某些高级别上全局处理 - 例如在路由评估之前加载数字ID并在路由数据中“替换”它。但我不确定这样一个黑客的正确位置 - 自定义MvcHandler,自定义IRouteHandler,在其他地方?关于这个的任何想法? :)
答案 0 :(得分:3)
protected override void Execute(System.Web.Routing.RequestContext requestContext)
{
if (requestContext.RouteData.Values["seo"] != null && requestContext.RouteData.Values["id"] == null)
{
// retrieve Id from Seo here (i use cache for that)
if (Id != null)
{
requestContext.RouteData.Values.Add("Id", (long)Id);
}
else
{
requestContext.RouteData.Values.Add("Id", 0);
}
}
base.Execute(requestContext);
}
因此,毕竟不需要黑客路由:)