0
在我的ViewModel我有兩個領域:ASP.NET MVC 4 - 下拉選擇的值不起作用
public AdTypeEnum Type { get; set; }
public IList<SelectListItem> TypeEnumList { get; set; }
這就是我如何填充列表:
public void SetLists()
{
TypeEnumList = new List<SelectListItem>();
TypeEnumList.Add(new SelectListItem { Value = "0", Text = "Select the type"});
foreach (var en in Enum.GetValues(typeof(AdTypeEnum)).Cast<AdTypeEnum>())
{
TypeEnumList.Add(new SelectListItem
{
Value = ((int)en).ToString(),
Text = en.ToString(),
Selected = Type == (AdTypeEnum)en ? true : false
});
}
}
然後我只是呈現一個下拉我的觀點:
@Html.DropDownListFor(x => x.Type, Model.TypeEnumList, new { @class = "form-control" })
但選定值不渲染和第一個選項總是選擇。當我檢查HTML中的選擇時,我發現沒有任何一個選項具有selected屬性,但是當我調試我的控制器方法時,我可以看到總是有一個selectListItem有propety Selected = true。爲什麼當我的視圖呈現時它突然消失?
您可以嘗試添加默認值:http://stackoverflow.com/questions/7229626/dropdownlistfor-default-value – jjh121
您的意思是?我正確地填充List,總是其中一個元素得到了Selected = true,但神奇的是,視圖上沒有任何選項具有選定的屬性:/那就是我想弄清楚的 –
CSharpBeginner
您沒有正確填充'SelectList'。不要添加第一個選項(使用'value =「0」)) - 使用正確的重載添加標籤選項 - 「@ Html.DropDownListFor(x => x.Type,Model.TypeEnumList」)選擇類型「 ,new {..})''生成了一個'null'值,並且在循環中它應該是'Value = en.ToString(),'最後,設置'SelectListItem'的'Selected'屬性是毫無意義的綁定到一個屬性,它的'Type'的值決定了哪個選項被選中('Selected'屬性被'DropDownListFor()'方法忽略 –