如果我有通常的Edit操作,那麼GET操作可以讓GET通過它的ID檢索對象並將其顯示在編輯窗體中。 POST的下一個採用ViewModel中的值並更新數據庫中的對象。驗證錯誤後的RedirectToAction
public virtual ActionResult Edit(int id)
[HttpPost]
public ActionResult Edit(VehicleVariantEditSaveViewModel viewModel)
如果在在POST操作模式結合發生錯誤時,我明白我可以RedirectToAction回GET行動,將其複製到TempData的,並在我們採取行動的重定向後取回保持的ModelState驗證錯誤。
if (TempData["ViewData"] != null)
{
ViewData = (ViewDataDictionary)TempData["ViewData"];
}
我怎麼然後再轉換ViewData的,包括以前的無效的ModelState,進入一個新的模式,使用戶可以看到他們的無效輸入與驗證警告發送到視圖?奇怪的是,如果我將從數據庫中檢索到的ViewModel的新實例(包含原始有效數據)傳遞給View(),則會忽略此視圖並顯示ViewData中的(無效)數據!
感謝
這個簡單的解決方案幫了我很多。謝謝! – jforberg 2014-06-24 08:03:20