你可以找到你/需要從這篇大文章重寫:An Introduction to ASP.NET MVC Extensibility
你可以寫一個自定義的MvcRouteHandler:
public class LangRouteHandler : MvcRouteHandler
{
protected override IHttpHandler GetHttpHandler(RequestContext requestContext)
{
if (requestContext.RouteData.Values.ContainsKey("lang"))
{
var culture = new CultureInfo(requestContext.RouteData.Values["lang"].ToString());
if (culture != null)
{
Thread.CurrentThread.CurrentUICulture = culture;
Thread.CurrentThread.CurrentCulture = culture;
}
}
return base.GetHttpHandler(requestContext);
}
}
而在你的路線使用routehandler像這樣:
routes.MapRoute(
name: "Default",
url: "{controller}/{lang}/{action}/{id}",
defaults: new { controller = "Home", lang = "en", action = "Index", id = UrlParameter.Optional }
).RouteHandler = new LangRouteHandler();
來源
2012-10-25 11:21:59
Wim
謝謝。奇蹟般有效。偉大的聯繫也 – maxlego
一個問題雖然......是否有可能使我的自定義路由處理程序作爲默認routehandler? – maxlego
不要這樣想。但是如果你想確定看看MVC項目中MapRoute擴展方法的源代碼,它是開源的。 – Wim