【问题标题】:MVC 3 Setting uiCulture does not workMVC 3 设置 uiCulture 不起作用
【发布时间】:2013-01-16 15:19:41
【问题描述】:

我在 C# 中使用 MVC3。我在 Web.Config 中添加了这段代码,目的是设置英国格式的格式。

....
        <globalization uiCulture="en-GB" culture="en-GB"/>
    </system.web>

不幸的是,文本仍以美国格式显示。 你能告诉我我在这里做错了什么吗?

【问题讨论】:

  • 你能检查一下 Thread.CurrentThread.CurrentUICulture 吗?
  • 你如何输出你的字符串?

标签: .net asp.net-mvc globalization


【解决方案1】:

这已在帖子“Change culture based on a link MVC4”中得到回答。您需要从 BaseController 继承您的 Controller,覆盖 BaseController 的 Initialize 方法,并使用 cookie。这不是我的代码,但如果链接中断:

protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
    HttpCookie languageCookie = System.Web.HttpContext.Current.Request.Cookies["Language"];
    if (languageCookie != null)
    {
        Thread.CurrentThread.CurrentCulture = new CultureInfo(languageCookie.Value);
        Thread.CurrentThread.CurrentUICulture = new CultureInfo(languageCookie.Value);
    }
    else
    {
    //other code here
    }

    base.Initialize(requestContext);
}

<li>@Html.ActionLink("Eng", "ChangeCulture", "Home", new { lang="en-US"}, new { @class = "languageSelectorEnglish" })</li>

public void ChangeCulture(string lang)
{
    Response.Cookies.Remove("Language");

    HttpCookie languageCookie = System.Web.HttpContext.Current.Request.Cookies["Language"];

    if (languageCookie == null) languageCookie = new HttpCookie("Language");

    languageCookie.Value = lang;

    languageCookie.Expires = DateTime.Now.AddDays(10);

    Response.SetCookie(languageCookie);

    Response.Redirect(Request.UrlReferrer.ToString());
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多