2010-08-12 46 views
1

我正在使用帶有元數據註釋的實體模型。我的控制器方法是這樣的......Asp.net Mvc2數據註釋驗證(客戶端工程,服務器端does not ??)

 if (!ModelState.IsValid) 
     { 
      return View(model); 
     } 
     else 
     { 
      UpdateModel(model); 
      repo.Save(); 
      return RedirectToAction("Index"); 
     } 

如果我能夠在查看客戶端驗證我會從元數據類得到每個屬性的錯誤。如果我將客戶端驗證出來,則將錯誤從保存到數據庫中引發,而不是返回具有錯誤摘要的視圖。

這是我的看法的頂部....

<% using (Html.BeginForm()) 
    {%> 
<%: Html.ValidationSummary(true) %> 

我試圖運行沒有在調試和發佈模式以及設置斷點和調試調試(Ctrl + F5)(F5)但在沒有服務器端驗證的情況下獲得客戶端驗證似乎很奇怪。我在這裏錯過了什麼?

回答

1

UpdateModel從表單集合,路由參數等中填充模型,並在服務器端進行驗證。您需要在更新後檢查ModelState.IsValid 。通常的模式是...

if (!TryUpdateModel(model)) 
{ 
    // Validation Failed... 
    return View(model); 
} 

// Validation Passed... 

請注意,TryUpdateModel捕獲異常,並在引發異常時返回false。如果它們不是,那麼它簡單返回ModelState.IsValid。

+0

謝謝!完美的作品。 – 2010-08-13 00:18:43

相關問題