到目前为止,我学到了如何设置正确的路由,如果我想在URL中使用该语言,例如.../en/MyController/MyMethod
。用下面的路由这个伟大的工程至今:URL,路由和区域中的语言
routes.MapRoute("Default with language", "{lang}/{controller}/{action}/{id}",
new
{
controller = "Report",
action = "Index",
id = UrlParameter.Optional,
}, new { lang = "de|en" });
// Standard-Routing
routes.MapRoute("Default", "{controller}/{action}/{id}", new
{
controller = "Report",
action = "Index",
id = UrlParameter.Optional,
lang = "de",
});
现在我插入一个新的领域Cms
,我呼吁AreaRegistration.RegisterAllAreas();
中的Application_Start()。
只要我把这个区域内的控制器,我错过了语言的关键:
MvcHandler handler = Context.Handler as MvcHandler;
if (handler == null)
return;
string lang = handler.RequestContext.RouteData.Values["lang"] as string;
我如何才能与区域上面的路由工作?
THX任何的窍门,sl3dg3
我不认为它是用这样的更新来回答你自己的问题。不管怎么说,我认为你的Area路由注册需要'AreaRegistration'中的'AreaName',这就是为什么它需要在那里覆盖。 – 2011-03-17 13:49:11
@Mike,为什么不回答我自己的问题?基本上它构成了我的答案的完整解决方案。 – sl3dg3 2011-03-17 14:33:54