ASP.NET MVC - 如何在EditorTemplates中使用Required消息

pin*_*one 5 asp.net-mvc mvc-editor-templates razor asp.net-mvc-4

我有一个简单的模型:

    public abstract class Person
    {
        [Required(ErrorMessage = "Il nome è obbligatorio!!!")]
        [UIHint("txtGeneric")]
        [Display(Name = "Nome")]
        public string Name { get; set; }

        [Required(ErrorMessage = "Il cognome è obbligatorio!!!")]
        [UIHint("txtGeneric")]
        [Display(Name = "Cognome")]
        public string Surname { get; set; }

        [Required(ErrorMessage = "L'email è obbligatoria e deve essere in formato valido (nome@dominio.it)!!!")]
        [UIHint("txtEmail")]
        [Display(Name = "E-mail")]
        public string Email { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我在EditorTemplate里面创建了txtGeneric.cshtml文件.它是这样的:

@model string
<input name="@ViewData.TemplateInfo.HtmlFieldPrefix" id="@ViewData.TemplateInfo.HtmlFieldPrefix" data-validation="required" data-validation-error-msg="MESSAGE_TO_PUT" value="@Model" />
Run Code Online (Sandbox Code Playgroud)

我想知道如何将与Errormessage of Required属性相关联的文本放入我的txtGeneric.cshtml文件中.我怎样才能做到这一点?

谢谢

zet*_*ety 7

这有效:

 @{
     string requiredMsg = "";
     foreach (var attr in @Html.GetUnobtrusiveValidationAttributes(@ViewData.TemplateInfo.HtmlFieldPrefix, @ViewData.ModelMetadata))
     {
         if (attr.Key == "data-val-required") {
             requiredMsg = attr.Value.ToString();
         }
     }
 }
Run Code Online (Sandbox Code Playgroud)

或这个:

 @{
     string requiredMsg = "";
     IEnumerable<ModelClientValidationRule> clientRules = ModelValidatorProviders.Providers.GetValidators(ViewData.ModelMetadata, ViewContext).SelectMany(v => v.GetClientValidationRules());
     foreach (ModelClientValidationRule rule in clientRules)
     {
         if (rule.ValidationType == "required")
         {
             requiredMsg = rule.ErrorMessage;
         }
     }
 }
Run Code Online (Sandbox Code Playgroud)