我是MVC的新手,但我已經完成了所有這些工作,閱讀所有文檔和所有問題以及所有可以找到的博客文章,而我所做的所有工作都是獲取完全纏繞在軸上。在MVC中堅持選定的值DropDownLists
我試圖做一個「創建」動作和視圖。我的數據輸入相對簡單,並且很常見:我有一個下拉列表和一個文本框。在我的情況下,我創建了一個用戶聯繫信道,然後在電子郵件和textmsg之間選擇下拉框,然後文本框輸入相關的聯繫信息,包括格式正確的電子郵件地址或移動電話號碼。
下面是一個(略簡化形式)我查看網頁:
<tr>
<td><%= Html.DropDownList("ChannelDescription", Model.ChannelDescription, "Select a Channel", new { id = "ChannelDDL", onchange="ChannelDDLChanged()" })%>
<br />
<%= Html.ValidationMessage("ChannelDescription", "Please Select a Channel") %>
</td>
<td>
<%= Html.TextBox("SubscriberNotificationAddr") %> <br />
<%= Html.ValidationMessage("SubscriberNotificationAddr", "Please enter a contact address or number") %>
</td>
</tr>
我使用的是強類型的ViewData模型,而不是使用的ViewDataDictionary。 ChannelDescription元素是一個SelectList,它通過選擇列表進行初始化,並且沒有選擇。
窗體的初始顯示,窗體中的數據輸入以及控制器從窗體中提取數據都很順利。
我的問題是,如果數據包含錯誤,如錯誤形成的電子郵件地址或手機號碼,我必須返回到視圖,我沒有成功獲取下拉列表選擇重新顯示。 ChannelDescription元素在控制器中重新創建,用戶選擇作爲選定項目。我在該視圖的該行上設置了斷點,並驗證了項目列表的選定元素的Selected屬性設置爲true,但仍顯示默認的「選擇頻道」。
這似乎是一個非常普遍的情況,不應該這麼難。我究竟做錯了什麼?僅供參考,這是在Firefox 3.5.2下運行的MVC 1.0(發行版),Windows 7和VS 2008。