【问题标题】:Change language url with id attribute asp.net mvc 5使用 id 属性更改语言 url asp.net mvc 5
【发布时间】:2017-05-23 12:46:06
【问题描述】:

我正在开发一个有 2 种语言的网站 它对我有用,但是当我更改具有参数的当前视图的语言,当前视图的语言发生更改并且重新加载当前视图但没有参数时,问题就出现了,它是一个空值
如何在更改语言的同时保留参数? 我搜索了很多时间,但我没有找到任何可以帮助我的东西

这就是我所做的

在 RouteConfig.cs 中

  public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");    
            routes.MapRoute(
                 name: "Default",
                 url: "{language}/{controller}/{action}/{id}",
                 defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, language = "en" }
             );    
        }

在html中

@Html.ActionLink(
                 "Arabic",
                 ViewContext.RouteData.Values["action"].ToString(),
                 ViewContext.RouteData.Values["controller"].ToString(),
                 new { language = "ar" }, 
                 null)

【问题讨论】:

  • 你有文化标志和帮手吗?如果是这样,请将文化放在溃败之前 new {culture = CultureHelper.GetDefaultCulture(), controller ...
  • 不,我没有文化令牌
  • 您的问题可能是您将语言参数设为可选language = "en"。对于默认语言/指定语言场景,应该有第二条路线(如果这是你想要做的)。如果您现在将控制器作为第一个参数传递,它将以语言路由值结束。见this answer

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


【解决方案1】:

在 url 更改中使用“id”属性更改语言:

@Html.ActionLink("Arabic",ViewContext.RouteData.Values["action"].ToString(), ViewContext.RouteData.Values["controller"].ToString(), new { language = "ar" }, null)

到:

@Html.ActionLink("Arabic",ViewContext.RouteData.Values["action"].ToString(), ViewContext.RouteData.Values["controller"].ToString(), new { language = "ar", id = ViewContext.RouteData.Values["id"]?.ToString() }, null)

【讨论】:

    猜你喜欢
    • 2015-03-17
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    相关资源
    最近更新 更多