下拉列表将根据字符串ASP.NET MVC的值进行自动选择



我在我的模型中有一个字符串和一个列表

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属性,并且如果SelectedListItemValue中有匹配,则将选择选定的选项,因此您可以在模型中添加一个属性:

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

最新更新