2012-03-23 19 views
5

Şu anda, Razor View motorunu kullanan bir MVC 3 uygulamasına sahibim. Göze batmayan doğrulamayı etkinleştirdim. Sorun, bir nedenle, sayfa yüklemesinde, Düzenle Görünümümün zorunlu alanlar için hatalar göstermesidir (alanlar bir değere sahip olsa bile). Başkası var mıydı? Bunu çözmek için herhangi bir öneriniz var mı? Teşekkürler. sorunlaDoğrulama Atölyesi Sayfa Yüklemesi

Numune Alanı: Model üzerinde

<div class="full"> 
      <label>Description:</label> 
      @Html.EditorFor(x=>x.Description, new{@class="super-textarea"}) 
      @Html.ValidationMessageFor(x => x.Description) 

     </div> 

Veri Açıklamalar:

 [Required, DataType(DataType.MultilineText)] 
    public virtual string Description { get; set; } 

WebConfig etkin ayarları:

 <add key="ClientValidationEnabled" value="true" /> 
<add key="UnobtrusiveJavaScriptEnabled" value="true" /> 

Ve tabii doğru jquery dosyaları ....

+0

aslında bir olmak görünmüyor göze batmayan onaylama ile sorun, ancak benim model durumu sayfa yüklenmeden önce geçersiz hale geliyor .... – AFD

+0

yardımcı Yani olacağını

ModelState.Clear(); 
user1287132

cevap

10

Tamam. Sorunu buldum. Model bağlama gerçekleşmeye çalışırken doğrulama gerçekleşiyordu. Bu gerçekleşti çünkü Get Metodumuz böyle görünüyor.

[HttpGet, RequestedObjectFilter] 
    public virtual ViewResult Edit(TKey id, T requestedObject) 
    { 

     return View(requestedObject); 
    } 

NET MVC bir özelliği

bir referans değeri bir ViewResult yöntemi İmza bir parametre olarak geçirilen bu zaman olduğu, ModelBinding da doğrulama ateşler olan, tetiklenir. Nesnede bizim yöntemimize geçmemizin sebebi, ilgili depodan soyutlanmış depodan getirilecek olan RequestedObjectFilter'imiz ve bu yönteme ActionParameters mülkiyeti üzerinden aktarılmıştır. ViewModel'i ayarlamak için RequestedObjectFilter'ımızı yeniden düzenledik, böylece parametreyi yöntemden kaldırmamıza ve böylece sorunu çözmemize izin verdik. Şimdi bizim yöntem aşağıdaki gibidir:

 [HttpGet, RequestedObjectFilter] 
    public virtual ViewResult Edit(TKey id) 
    { 

     return View(); 
    } 
+0

Harika! Bu aynı problemi yaşadığım için bana yardımcı oldu, teşekkürler. –

14

Ayrıca ModelState hataları temizleyebilirsiniz

Kodunuz özü ... çok
+0

Bu yazıyı görmek de dahil olmak üzere farklı şeyleri denemeden sonra, uygun olduğunu düşünmüyordum, yanılmışım. Bu benim sorunumu çözdü. – Caverman