我有以下路由,这基本上使我能够将语言保留在网址中,并确保只有de
和fr
(约束)是可能的。在Default
- 路由中,如果包含的网址中没有语言,我会将de
设置为标准:
// Routing with language
routes.MapRoute("Default_with_language", "{lang}/{controller}/{action}/{id}", new
{
controller = "Home",
action = "Index",
id = UrlParameter.Optional,
}, new { lang = "de|fr" });
// Standard-Routing
routes.MapRoute("Default", "{controller}/{action}/{id}", new
{
controller = "Home",
action = "Index",
id = UrlParameter.Optional,
lang = "de",
});
如何更改每个请求中的默认语言?假设我有两个Urls,一个是德语,一个是法语,如果法语网址被叫,我想lang = "fr"
...
任何tipp的Thx sl3dg3
答案 0 :(得分:0)
在Application_BeginRequest
处理程序中,您可以访问当前路由,并且您应该能够使用类似的内容更改值。
HttpContext.Current.Request.RequestContext.RouteData.Values.Add("lang", detectedLanguageFromUrl);
希望这足以让路由获得新价值。
答案 1 :(得分:0)
@Tim:谢谢你的回答。我同时想出了类似的东西:
var defaultRoute = RouteTable.Routes["Default"] as Route;
if (Request.Url.ToString().Contains("myFrenchUrl.ch"))
defaultRoute.Defaults["lang"] = "fr";
else
defaultRoute.Defaults["lang"] = "de";
sl3dg3