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()'方法忽略 –