2014-07-04 24 views
5

içindeki Gerekli mesajı kullanmak için basit bir modeli var. Bu şu şekildedir:ASP.NET MVC nasıl bir EditorTemplates

@model string 
<input name="@ViewData.TemplateInfo.HtmlFieldPrefix" id="@ViewData.TemplateInfo.HtmlFieldPrefix" data-validation="required" data-validation-error-msg="MESSAGE_TO_PUT" value="@Model" /> 

benim txtGeneric.cshtml dosyasına koymak Gerekli özelliğinin metin ilişkili errorMessage almaya nasıl bilmek istiyorum. Bunu nasıl yapabilirim?

Teşekkür

+0

doğrulama ayarlamak için iki yol vardır. 1. Model modeli için @ Html.ValidationSummary() // 2. Seçilen model özelliği için @ Html.ValidationMessageFor (/ * expression * /) //. Doğrulama yardımcı programını kaçırıyor gibi görünüyor. –

+0

Evet, Validasyon yardımcısını biliyorum, daha önce koyduğum, istediğim şey biraz farklı ... Mesajın metin değerini elde etmek için gerekli olan modelin içine girmek istedim. özel javascript amacı) ... bu mümkün mü? – pinguinone

+0

Jquery'yi kullanabilir ve iç metni alabilirsiniz. , onaylama yardımcısı html'sini kontrol edip, bunun dahili metnini elde edin. –

cevap

5

Bu çalışır:

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

veya bu:

@{ 
    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; 
     } 
    } 
} 
3

bu şekilde şablonu değiştirin:

@model string 
    @Html.TextBoxFor(m => m) 
    @Html.ValidationMessageFor(model => model, "", new { @class = "text-danger" }) 
+0

içine yerleştirmek istiyorum Bu şekilde, doğrulama mesajı editortemplate tarafından oluşturulan giriş alanının dışında olmalıdır ... sadece metne erişmek istiyorum ve giriş sonucunun içine koymak istiyorum – pinguinone

+0

'data-val-required' özniteliğinin, '

+0

Hayır Üzgünüm, ama ingilizcem kötü ve benim de açıklamam. Editörün içindeki mesajın metnini görüntülemek istiyorum @ ViewData.TemplateInfo.HtmlFieldPrefix ama gerekli mesaj için – pinguinone