2011-12-14 11 views
71

benim Jilet görüntüsü içinden ModelState.IsValid nasıl öğrenebilirim: manken devlet ise silinmesine izin vermek için bir anahtar teslim sunmak değil istediğiniz görünümündebenim eylem yönteminde aşağıdaki gelmiş

 if (!ModelState.IsValid) 
     return View(vm); 

geçerli değil. Bunu yapabileceğimin bir yolu var mı? Model durumu görünümde mevcut mu?

Güncelleme: Ben verildi yanıtlara dayalı bu uygulamıştır:

  <div class="adm_td0" style=" padding: 0;"> 
      @if (ViewData.ModelState.IsValid) { 
       <input type='submit' value='Delete' name='SubmitAction' /> 
      } 
       <input type='submit' value='Cancel' name='SubmitAction' /> 
      </div> 
+0

ayrıca Html.AntiForgeryToken kullanarak sağlamak. Silme eylemi kolayca yapılabilir. Umursamaz - (küçük bir iç uygulama olabilir) ama sadece bir uyarı. Düğmenin gösterilmemesi, çağrılmayacağı anlamına gelmez. Ayrıca, istemci tarafında bir şeylerin başarısız olmadığından emin olmak için, sunucu tarafındaki modeller akışını da gönderiyorum. –

cevap

160

Model durumu görünümde mevcut mu? Tabii

:

@if (!ViewData.ModelState.IsValid) 
{ 
    <div>There are some errors</div> 
} 
+0

Belirli hataları denetlemenin bir yolu olup olmadığını biliyor musunuz? gibi bir şey: @if (ViewData.ModelState.Errors ["errorName"]) {// bir şey yap} – Owen

+12

Unutmayın, bunu çözdüm: Html .ViewData.ModelState ["PropertyName"] Hatalar – Owen

+1

Ayrıca bunu doğrulama özetinde belirli bir hata görüntülemek için kullandım ve işe yaradı. @if (ViewData.ModelState.Keys.Any (x => x == "ErrorKeyName")) { @ Html.ValidationSummary (true, "") } – N0rA

10

O görünümünün kendi içinde bu ihtiyacın yaygın değil ama şöyle erişebilirsiniz:

@ViewData.ModelState.IsValid 
+1

Bu, önceki istek için olsa da olacak. Gönderilmek üzere olan istek değil. –

+0

@ChrisKooken, istekleri ne demek istediğini açıklayabilir misiniz? Benim anlayışım, ModelState'in sunucu tarafından o sırada işlenmekte olan istek için model bağlamadan herhangi bir hatanın durumunu içereceği şeklindedir. –

+2

@NormanH, bir * görünümünde '@ ViewData.ModelState.IsValid 'kullandığınızda, görünümün gösterilmesinden hemen önce işlenen modelin durumunu anlatacaktır. Yani akış: görünümü A -> düğmesine basın ve sonrası -> denetleyici: B yönteminden önce model bağlama B -> geçersiz durum -> B yöntemi görünümü döndürür B -> '@ ViewData.ModelState.IsValid 'önce bağlama sırasında ne olduğunu anlatacağım yöntem B – bvgheluwe

İlgili konular