ASP.Net MVC验证本地化不覆盖浏览器默认语言

时间:2015-06-23 15:28:49

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

我的本​​地化工作符合预期的标签,但似乎无法弄清楚验证消息未被本地化的原因。如果我将浏览器默认语言更改为“es-ES”,则验证邮件将使用西班牙语。但是,应用程序应该使用我们的本地数据库中设置的语言。例如,在下面的代码中,Impacts的标签被本地化为西班牙语,但ProductID错误消息以英语显示。使用cookie在控制器操作开始时设置Culture。

我还注意到,如果我在web.config中将语言设置为西班牙语,则验证消息是西班牙语。

以下是适用于标签的当前代码,但不适用于验证消息。

我想要的是验证错误消息是西班牙语,如标签。

Web.Config中:

<globalization culture="auto" uiCulture="auto" enableClientBasedCulture="true" />

查看型号:

[Required(ErrorMessageResourceName = "errProduct", ErrorMessageResourceType = typeof(Resources.ProductSupport.addcallText))]
public Int32? ProductID { get; set; }

[Display(Name = "lblEffect", ResourceType = typeof(Resources.ProductSupport.addcallText))]
public IEnumerable<SelectListItem> Impacts { get; set; }

查看:

@Html.ValidationMessageFor(x => x.ProductID)

@Html.LabelFor(x => x.Impacts)

1 个答案:

答案 0 :(得分:1)

在Global.asax.cs文件中设置文化似乎正在发挥作用。

protected void Application_AcquireRequestState(object sender, EventArgs e)
{
    LanguageHelper.SetCulture(null);
}