2015-03-17 30 views
5
@Html.RequiredLabelFor(x => x.FirstName) 
@Html.TextBoxFor(model => model.FirstName, new { Name = "1.first_name", tabindex = "1" }) 
@Html.ValidationMessageFor(model => model.FirstName) 

@ Html.TextBoxFor için valide ediliyor alan ancak "doğrulama mesajı" ikinci parametre geçirerek bir nedeni var mı göstermiyorsunuz görünmüyor? Jilet @ Html.ValidationMessageFor() "doğrulama hata iletisi"

@Html.RequiredLabelFor(x => x.FirstName) 
@Html.TextBoxFor(model => model.FirstName) 
@Html.ValidationMessageFor(model => model.FirstName) 

sadece bir argüman (lambda ifade) "doğrulama" mesajı doğru olarak görüntülenmekte olduğunu kabul eden bir aşırı yük kullanılmıştır.

Anlayışımda asıl özellik tanınmıyor mu?

Yedekleme özelliği:

[StringLength(100, ErrorMessage = "Max length 100 characters")] 
[Required(ErrorMessage = "This field is required")] 
[Display(Name = "First name")] 
public string FirstName { get; set; } 

cevap

12

mütevazi doğrulama kütüphanesi tanımlayan adı özelliğini kullanan 'şeyler için doğrulama görüntülemek için'. Ekstra özelliklerin belirtilmesi çalışmayı durdurur, ancak ad özelliğini değiştirdiniz ve doğrulama yardımcınızdaki yeni adı yansıtmadınız. (eğer görünümünü dönmek için varsayılan model bağlayıcı kullanmak gerekirse) veya

@Html.ValidationMessage("1.first_name") 

kullanabilirsiniz

Ya da metin kutusu yardımcı ad özelliğini değiştirerek durdurmak yukarıdaki yöntem değil

olduğunu edebilir iyi bir fikir , JS'nin bu soruya verdikleri yanıtlar için (AJAX aracılığıyla) form verilerinizi doğrulamak ve göndermek için JS/JQuery kullanıyorsunuz.

+1

'@ Html.ValidationMessage (" 1.first_name ")' işlevini kullanmayın. Bu, yalnızca geri gönderildiğinde tüm model bağlantısının kaybolduğu anlamına gelmez, ayrıca görünüm döndürülürse, bu özellik için hiçbir zaman 'ModelState' hatası görüntülenmez –

5

name özniteliğini değiştirdiniz, bu nedenle yalnızca modelinizi geri göndermeyecek ve bağlayamayacaksınız, jquery.validate.unobtrusive artık girdilerin ilişkili doğrulama iletisinden farklı bir ad olduğundan, artık denetimleri eşleştiremez