Asp.net-Mvc-3
頁面載入時觸發驗證
目前,我有一個使用 Razor View 引擎的 MVC 3 應用程序。我啟用了不顯眼的驗證。問題是由於某種原因,在頁面載入時,我的編輯視圖顯示必填欄位的錯誤(即使這些欄位有值)。有沒有其他人遇到過這個?有什麼解決這個問題的建議嗎?謝謝。
有問題的範例欄位:
<div class="full"> <label>Description:</label> @Html.EditorFor(x=>x.Description, new{@class="super-textarea"}) @Html.ValidationMessageFor(x => x.Description) </div>模型上的數據註釋:
[Required, DataType(DataType.MultilineText)] public virtual string Description { get; set; }WebConfig 啟用設置:
<add key="ClientValidationEnabled" value="true" /> <add key="UnobtrusiveJavaScriptEnabled" value="true" />當然還有正確的 jquery 文件….
好的。發現了問題。由於試圖進行模型綁定,正在發生驗證。發生這種情況是因為我們的 Get 方法看起來像這樣。
[HttpGet, RequestedObjectFilter] public virtual ViewResult Edit(TKey id, T requestedObject) { return View(requestedObject); }.NET MVC 的一個特性是,只要在 ViewResult 的方法簽名中將引用值作為參數傳遞,就會觸發 ModelBinding,進而觸發驗證。我們將對像傳遞給我們的方法的原因是我們的 RequestedObjectFilter 將從我們的抽象儲存庫中獲取相關實體,並通過 ActionParameters 屬性將其傳遞給該方法。我們重構了 RequestedObjectFilter 來設置 ViewModel,允許我們從方法中刪除參數,從而解決了問題。現在我們的方法如下所示:
[HttpGet, RequestedObjectFilter] public virtual ViewResult Edit(TKey id) { return View(); }
您還可以從 ModelState 中清除錯誤
ModelState.Clear();