我在理解如何最好地實現不顯眼的客戶端驗證時遇到問題,該驗證與在控制器中添加的錯誤一起使用ModelState.AddModelError()
。MVC3中的驗證摘要,結合了預定義的和ModelState的錯誤
所以,這是當前的代碼:
@Html.ValidationSummary(true)
@Html.ValidationMessageFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.LastName)
會正確顯示錯誤消息,如果我離開了名字。如果我輸入名字並標籤出來,消息將消失 - 因爲它應該工作。
當沒有客戶端錯誤存在,我可以提交此表單,我必須檢查數據庫,用戶不存在。如果是這樣,我加入一個錯誤有:
ModelState.AddModelError("", "User already exists")
當返回模型,顯示一個錯誤框,但沒有消息在那裏。
如果我將(編輯:Jan的評論解決了這部分)@Html.ValidationSummary(true)
更改爲@Html.ValidationSummary(false)
,我將看到模型正確返回的錯誤消息。
現在的問題是,所有的客戶端驗證將被複制並顯示在兩個不同的地方。
此外,我想錯誤顯示在相同的地方/ div。就目前而言,這將是兩個不同的驗證摘要。
任何方法?
這應該工作(空字符串作爲AddModelError和ValSum(true)的關鍵參數)。你確定你傳遞一個空字符串作爲關鍵參數嗎? – Jan 2012-01-11 13:40:23
謝謝!將它設置爲空之後我沒有編譯過。現在它正確顯示錯誤信息。我仍然有問題,現在有兩個錯誤框:一個用於模型狀態錯誤的摘要,然後一個用於預定義的客戶端錯誤:@ Html.ValidationMessageFor() – Andreas 2012-01-11 13:53:44