【发布时间】: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