我在我的模型中有一个字符串和一个列表
public string _drinkType { get; set; }
public List<SelectListItem> _drinkTypeDropDown { get; set; }
在我的视图中
@Html.DropDownListFor(m => m._drinkTypeDropDown , new List<SelectListItem>
{
new SelectListItem{Text="Milk", Value="1"},
new SelectListItem{Text="coffee", Value="2"},
new SelectListItem{Text="tea", Value="3"}
}
现在在我的控制器中,我在属性_drinkType
中获得了价值"牛奶","茶"one_answers"咖啡"。与属性值匹配时,我必须在DropdownlistFor
中设置所选选项
有点像 if _drinktype = milk
然后,下拉列表将自动加载牛奶
您可以在控制器中使用可能的选项设置ViewBag
属性,并且该模型只能保留将保留实际值的属性。在您的控制器中,将值添加到ViewBag
:
ViewBag.DrinkTypeDropDown = new List<SelectListItem>()
{
new SelectListItem{Text="Milk", Value="1"},
new SelectListItem{Text="coffee", Value="2"},
new SelectListItem{Text="tea", Value="3"}
};
在您的中,声明下拉列表:
@Html.DropDownListFor(model => model._drinkType, (IEnumerable<SelectListItem>)ViewBag.DrinkTypeDropDown)
edit :由于您具有Text
属性,并且如果SelectedListItem
的Value
中有匹配,则将选择选定的选项,因此您可以在模型中添加一个属性:
public string _drinkTypeValue { get; set; }
从控制器操作结果返回视图之前,您必须根据_drinkType
的值设置_drinkTypeValue
:
model._drinkTypeValue = model._drinkTypeDropDown.Where(item => item.Text == model._drinkType).FirstOrDefault().Value; // You will have to treat null values of FirstOrDefault() here
在您的视图中,将下拉值绑定到_drinkTypeValue
:
@Html.DropDownListFor(model => model._drinkTypeValue, Model._drinkTypeDropDown)
当用户提交表单时,它实际上将提交_drinkTypeValue
,因此您必须以类似的方式将其再次转换为_drinkType
。