在每个请求的路由中设置默认值

时间:2011-06-01 13:20:07

标签: c# asp.net-mvc-3 routing

我有以下路由,这基本上使我能够将语言保留在网址中,并确保只有defr(约束)是可能的。在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

2 个答案:

答案 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