@ Html.ValidationMessageFor不显示本地化错误消息,仅显示默认语言

时间:2017-01-05 11:41:37

标签: c# asp.net-mvc localization

我有一个小项目,用户在进入应用程序时选择他们想要使用的语言(EN或FR),并且两种语言都有本地化的资源文件。选择后,视图将选择任一资源文件而不会出现问题。所有文本都以各自的语言正确显示。

问题在于验证消息。如果用户提交并随后触发其中一条消息,则它们将始终以英语显示(默认资源)。代码设置: -

模型

[Required(ErrorMessageResourceType = typeof(Resources.Global), ErrorMessageResourceName = "FirstNameValidation")]
    public string FirstName { get; set; }

查看

            <div>
            <h4>@Resources.Global.FirstName</h4>
            @Html.TextBoxFor(model => model.FirstName, new { @class = "form-control" })
            @Html.ValidationMessageFor(model => model.FirstName, "", new { @class = "text-danger" })
        </div>

控制器

private static void SetCurrentCultureLanguage(string languageType)
    {
        CultureInfo ci = new CultureInfo(languageType);
        Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(languageType);
        Thread.CurrentThread.CurrentUICulture = ci;
    }

我尝试了另一种使用动作过滤器+路径数据设置语言的方法。当用户设置他们选择的语言时,将其添加到这样的路由值...

RouteData.Values["language"] = language;

然后将其应用于动作过滤器: -

public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var language = (string) filterContext.RouteData.Values["language"];

        var ci = new CultureInfo(language);
        Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(language);
        Thread.CurrentThread.CurrentUICulture = ci;
    }

@ Html.ValidationMessageFor在哪里拉动它的资源选择?调试上述两次尝试都表明CurrentCulture和CurrentUiCulture设置为&#34; fr&#34;在整个过程中,但它并不想要认识到资源的存在。

0 个答案:

没有答案