2011-06-06 50 views
2

我正在使用MVC 3與ASP.NET。我有一個下拉框,並從數據庫中填充它。我在視圖上使用驗證。如果驗證失敗,則顯示相同的視圖,並在ViewDate.ModelState.AddModelError中捕獲錯誤。驗證失敗時選擇的下拉列表值更改--ASP.NET MVC

我正在檢查ViewData.Modelstate.IsValid屬性,如果爲true,那麼執行代碼,否則在視圖中顯示錯誤。

它將頁面中的錯誤消除,但當驗證失敗時,下拉列表中的選定值將重置。

如何確保選擇的下拉列表在驗證失敗時不會改變?

+0

我建議你把有問題的代碼放在這裏(具體來說,來自控制器的POST動作和來自視圖的DropDownList語句)。有很多方法來構建下拉框 - 所以很難說沒有看代碼! – Felix 2011-06-16 08:29:46

回答

0

在處理表單提交和驗證的操作中,請確保在呈現表單視圖之前在窗體上設置模型對象的屬性。

例如,在this question中,您可以看到返回View()時如何重用Create操作中的Dinner對象參數。

+1

@Mike:我沒有得到你!你能更清楚嗎? – 2011-06-06 13:55:41

+0

@Hari:我剛剛在另一個問題中找到了一些示例代碼。 – MikeWyatt 2011-06-06 13:56:21

+1

@MikeWyatt:示例代碼沒有與DropDown框相關的任何內容... – Felix 2011-06-16 08:26:29

0

在處理提交的動作中設置一個斷點,並檢查屬性以獲取值列表。如果它爲空或空重新加載它。

如果您的下拉列表正在通過JavaScript填充,那麼在提交時有可能持有值列表的屬性爲空。在使用級聯下拉列表時,這種情況很常見,例如加載基於國家/地區的省/州列表的情況。在模型傳遞到視圖後加載的所有級聯列表必須使用處理提交的控制器操作中每個下拉列表的選定值重新加載。

相關問題