【问题标题】:Set default value in a routing on each request在每个请求的路由中设置默认值
【发布时间】:2011-06-01 13:20:06
【问题描述】:

我有以下路由,这基本上使我能够将语言保留在 url 中,并确保只有 defr(约束)是可能的。在Default - 路由中,如果包含的url中没有语言,我将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",
});

如何更改每个请求中的默认语言?假设我有两个网址,一个是德语的,一个是法语的,如果调用法语网址,我想拥有lang = "fr"...

感谢任何提示 sl3dg3

【问题讨论】:

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


    【解决方案1】:

    在您的Application_BeginRequest 处理程序中,您可以访问当前路由,并且您应该能够使用类似这样的方式更改值。

     HttpContext.Current.Request.RequestContext.RouteData.Values.Add("lang", detectedLanguageFromUrl);
    

    希望这足以让路由获得新的价值。

    【讨论】:

      【解决方案2】:

      @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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-06
        • 2021-11-21
        相关资源
        最近更新 更多