Asp.net-Mvc
在控制器方法中重新驗證修改後的 ViewModel?
編輯- 我們正在使用 MVC4 Dev Preview….
我正在為一個
FishingTrip類實現一個編輯頁面。FishingTrip包含簡單Crew對象的子集合(即 FishingTripID、CrewID、CrewPosition)。我正在使用Jarrett Meyer 的方法從
Crew集合中添加、編輯和刪除。我正在使用不顯眼的驗證來指定 的屬性Crew都是Required.我的問題:當我從列表中邏輯刪除一個項目時(根據 Jarrett 的方法),我不希望驗證該項目。
我已經成功地調整了客戶端上的“removeRow”方法,以禁用對邏輯刪除項目的不顯眼驗證,這樣即使有一個項目包含空白欄位,表單也會發布。
在我的控制器方法
[HttpPost] Edit中,ModelState.IsValid以 false 開始(正如預期的那樣 - 因為邏輯刪除的項目包含空白欄位。)所以我從我的 ViewModel 中刪除了該項目……但ModelState.IsValid仍然是錯誤的。總之,我(想我)想在控制器方法中修改我的 ViewModel 以刪除有問題的項目,然後呼叫某種“重新驗證”,並
ModelState.IsValid顯示為 true。有任何想法嗎?
刪除違規項目後,清除 ModelState 並再次驗證,如下所示:
ModelState.Clear(); TryValidateModel(crew); // assumes the model being passed is named "crew"注意:使用方法時要小心,
TryValidateModel因為此方法不驗證模型的嵌套對象(如@Merenzo 所述)。