2010-05-16 83 views
1

我在DropDownList中強型模型視圖類ASP.NET MVC的DropDownList驗證

[DisplayName("Country")] 
public List<SelectListItem> Countries { get; set; } 

財產。

當我嘗試檢查ModelState.IsValid的形式回發,它總是假&錯誤國家告訴「無法轉換[值]以SelectListItem」或某種一種。

我覺得沒有下拉選擇值的直接映射(看起來像我必須從表單值集合中讀取值),但我怎樣才能忽略List屬性的綁定和驗證?我只是想讓ModelState.IsValid屬性爲true,如果所有其他字段正確填充。

預先感謝您

回答

0

是因爲提交的值是String類型或Country的,而不是SelectListItemList<SelectListItem>列表。

你在UI中綁定了什麼控件?

嘗試

[DisplayName("Country")] 
public List<Country> Countries { get; set; } 

哪裏Country是從你的DAL類型名稱。

編輯: 根據您recieving錯誤,這聽起來像模型期待值是一個String所以嘗試換List<Country>List<String>

[DisplayName("Country")] 
public List<string> Countries { get; set; } 
+1

仍然是一樣的ModelState錯誤。無法從字符串轉換到國家 – 2010-05-16 18:37:50

+0

所以它需要是一個String然後。告訴你你是什麼 需要做。 – 2010-05-17 08:45:38

+0

但它不能是一個字符串,因爲它是一些東西:) 我放棄了我的嘗試使用DropDownListFor並使用DropDownList與[name]屬性指向視圖模型中的字符串屬性 – 2010-05-17 09:10:55

0

最後我用瞭解決方法。

我現在型號:

class Model 
{ 
... 
    [DisplayName("Country")] 
    List<Country> Countries; 

    Guid CountrySelected <-- new field! 
... 
} 

我用Html.DropDownList( 「CountrySelected」,Model.Countries.Select(X =>新SelectItemList ..)

代替HtmlDropDownListFor HtmlDropDownListFor地圖[ id selected]列表爲不是CountrySelected屬性現在[id selected]映射到CountrySelected