2016-09-22 96 views
-1

顯然,unobtrusive jsModelState錯誤不一起玩。我想要完成的是2件事。當發生ModelState或客戶端錯誤時,它將由validation-summary-errors類顯示。添加類的ValidationSummary

我遇到的問題是,而是採用了幫手,

<div class="validation-summary-errors" data-valmsg-summary="true"> 
    <ul style="list-style-type:none;"></ul> 
</div> 

它不會顯示ModelState錯誤,因此我試着用下面的代碼,

代碼:

if (!ViewData.ModelState.IsValid) 
{ 
    <div class="validation-summary-errors" data-valmsg-summary="true"> 
     <ul style="list-style-type:none;"></ul> 
    </div> 
} 
else 
{ 
    @Html.ValidationSummary() 
} 

但我不能格式化,因爲輔助輸出(如也從列表中刪除子彈)!

這裏是JavaScript:

$(document).ready(function() { 
    $('form').each(function() { 
     var theForm = $(this); 
     theForm.submit(function() { 
      if ($(this).valid()) { 
       if ($(this).find('.validation-summary-valid').length) { 
        $('.validation-summary-errors').hide(); 
       } 
      } else { 
       if ($(this).find('.validation-summary-errors').length) { 
        $('.validation-summary-errors') 
         .addClass('alert alert-danger'); 
       } 
      } 
     }); 
    }); 
}); 
+0

所有你需要的是@@ Html.ValidationSummary()'並刪除你的腳本(建議你到MVC站點並通過教程來了解驗證的基礎 - 你問題中的第一句話是錯誤的) –

回答

0

不引人注目和模型狀態確實發揮得很好。

你硬編碼您的視圖時驗證失敗,顯示一個空的列表,並只使用剃刀助手時驗證成功,因此會一直顯示一個空的列表。

只需使用@Html.ValidationSummary()沒有if塊。如果模型有效,它將自動爲空。

如果當你期望他們正在顯示沒有模型驗證消息,請在您的控制器中的斷點if (ModelState.IsValid)和檢查模式。然後檢查您的數據註釋。出於調試目的,您可以手動添加模型狀態錯誤ModelSatate.AddModelError("fieldname", "This field has an error");只是爲了證明Razor幫手正在工作。

0

使用此

@Html.ValidationSummary(true, "", new { @class = "validation-summary-errors" }) 
0

感謝您的輸入。 我最終刪除了ValidationSummary()的if語句。爲了處理我最終做的事情,添加一個類似於上面所示的小腳本,但是用於window.onload事件。通過這種方式,它可以捕獲ModelState錯誤,而上面的錯誤可以處理這些令人髮指的事情。