我有一個奇怪的問題,關於驗證我的窗體上的下拉列表。一個下拉的狀態的列表,並裝飾有RequiredAttribute標籤:使用Html.ValidateFor()助手在IE7中下拉客戶端驗證
[Required(ErrorMessage="State is required.")]
的視圖中,下拉及其驗證被定義爲:
<%: Html.DropDownListFor(m => m.State, new SelectList(BusinessLayer.UsStates.GetList())) %>
<% Html.ValidateFor(m => m.State); %>
UsStates.GetList()
返回List<string>
。 我所有的客戶端驗證(包括下拉菜單)都能在Firefox,Chrome甚至IE8中完美工作。然而,在IE7中它已經崩潰 - 即使在下拉列表中正確選擇了狀態(及其值)時,驗證也會失敗並顯示「狀態爲必需」。
解決我的問題:
IE7不快樂有關的事實,每一個選項的值屬性未呈現。所以將List傳遞給SelectList()並沒有削減它。你必須在鍵/值對類型對象的列表來傳遞,並通過在DataValueField和DataTextField參數,就像這樣:
<%: Html.DropDownListFor(m => m.State, new SelectList(BusinessLayer.UsStates.GetList(), "Value", "Text"))%>
這是很煩人的.. :)
在IE7中的任何JavaScript錯誤? – 2010-06-21 16:34:06
不,沒有。奇怪的... – Kon 2010-06-21 16:37:01