c# – 必需的数据注释未被翻译

我们面临着一个奇怪的错误与本地化的必需属性。

我们有以下代码:

    public class AnswersGroupViewModel
    {
        public int IDAnswerGroup { get; set; }
        public int IDEvaluator { get; set; }
        public List<AnswersViewModel> Answers { get; set; }
    }

    public class AnswersViewModel
    {        
        public string Text{ get; set; }      
        [Required(ErrorMessageResourceName = "RequiredMessage", ErrorMessageResourceType = typeof(Resources.Language))]
        public int IDAnswer{ get; set; }
    }

问题在于,尽管存在(我们在西班牙语和俄语资源文件都有RequiredMessage),但是“RequiredMessage”的正确翻译没有从资源文件中获取。

属性像显示正在工作和被翻译,但似乎是必需属性的问题。

这是一个示例图像:

 

错误显示为@ Html.ValidationMessage

在此先感谢您的帮助。

我将首先在web.config中设置全球化元素

<system.web>
  <globalization enableClientBasedCulture="true" culture="auto" uiCulture="auto"/>

接下来,我将检查您在控制器中获得的文化(在DB中记录或传递到具有@ViewBag的视图

culture = CultureInfo.InstalledUICulture.IetfLanguageTag;
if (HttpContext.Current != null && HttpContext.Current.Request.UserLanguages != null)
{
    culture = Request.UserLanguages[0];     
}

确认用于识别文化的值是标题使用的值

跟进

您正在使用全球化标头来检查用户语言,但是在浏览器中手动设置用户语言。

2尝试尝试:

1)使用Javascript在浏览器中设置用户语言:

<script type="text/javascript"> 
     Globalize.culture("@ViewBag.Culture");
</script>

或者如果文化设置在Javascript(vs C#)

<script type="text/javascript"> 
     Globalize.culture(culturevariable);
</script>

2)ParameterisedRequiredAttribute

public class ParameterisedRequiredAttribute : RequiredAttribute
{
    private string[] _replacements { get; set; }

    public ParameterisedRequiredAttribute(params string[] replacements)
    {
        _replacements = replacements;

        ErrorMessageResourceName = ErrorMessagesErrors.SpecificFieldRequired;
        ErrorMessageResourceType = typeof(ErrorMessages);
    }

    public override string FormatErrorMessage(string name)
    {
        return string.Format(ErrorMessageString, (object[])_replacements);
    }
}

如果手动设置语言,第一种方法似乎是一个更好的解决方案。简单地说,每次用户改变语言模式时,必须重新设置注释。

另一件需要考虑的是,您当前设置语言的方式(通过标题)可能是您的最佳解决方案。虽然这是更难测试,因为您需要一个专门的语言的客户端,这是您的用户最好的区分(标题)的方式。

http://stackoverflow.com/questions/29743401/required-data-annotation-is-not-being-translated

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – 必需的数据注释未被翻译