我有一個@Html.DropDownListFor
,它顯示了我的數據庫中的項目列表。如果未選擇任何值,則Html.DropDownListFor會出錯
非常簡單的我與這些PARAMATERS一個ViewModel
public class RegisterViewModel
{
[Required]
[Display(Name = "Country")]
public string SelectedCountryId { get; set; }
public IEnumerable<System.Web.Mvc.SelectListItem> CountryList { get; set; }
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
}
我然後在我的控制器填充IEnumerable<System.Web.Mvc.SelectListItem>
本:
IEnumerable<SelectListItem> countries = _DB.Countries.Where(x => x.Status == Status.Visible)
.Select(x => new SelectListItem()
{
Value = x.ID + "",
Text = "(+" +x.PhoneCountryCode + ") - " + x.Name
}).ToList();
countries.First().Selected = true;
我然後使用以下HTML顯示選項集
@Html.DropDownListFor(m => m.SelectedCountryId, Model.CountryList, new { @class = "form-control" })
選項列表總是有第一個o選擇頁面加載時,如果你點擊它有三個選項可供選擇。
我的問題是,如果你不打開列表,然後選擇一個項目(即只要把它的默認值),這個錯誤是從我的觀點拋出,
具有的ViewData的項目鍵'SelectedCountryId'的類型爲 'System.String',但必須是'IEnumerable'類型。
如果您打開下拉菜單並手動選擇項目,則不會發生此錯誤。如果我從列表SelectedCountryId
中選擇一些其他項目確實得到正確的值。
我嘗試將public string SelectedCountryId { get; set; }
從string
改爲IEnumerable<SelectListItem>
,而這確實使錯誤消失,但列表始終爲空。
任何好點子?
http://stackoverflow.com/questions/7142961/mvc3-dropdownlistfor-a-simple-example –