2010-06-21 45 views
0

我有一個奇怪的問題,關於驗證我的窗體上的下拉列表。一個下拉的狀態的列表,並裝飾有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"))%> 

這是很煩人的.. :)

+0

在IE7中的任何JavaScript錯誤? – 2010-06-21 16:34:06

+0

不,沒有。奇怪的... – Kon 2010-06-21 16:37:01

回答

1

解決我的問題:

對於每個選項的value屬性都沒有呈現的事實,IE7並不高興。所以將List<string>傳入SelectList()並沒有削減它。你必須在鍵/值對類型對象的列表來傳遞,並通過在DataValueField和DataTextField參數,就像這樣:

<%: Html.DropDownListFor(m => m.State, new SelectList(BusinessLayer.UsStates.GetList(), "Value", "Text"))%> 

這是很煩人的.. :)