根据字符串 asp.net 的值自动选择 DropdownListfor mvc
DropdownListfor to be auto selected on the basis of a value of string 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
中得到值 "Milk"、"tea" 和 "coffee"。当它与 属性 值
匹配时,我必须在 DropdownlistFor
中设置所选选项
有点像
if _drinktype = milk
然后 dropdownlistFor 将自动加载并选择 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)
编辑: 因为你有 Text
属性 并且如果 Value
中有匹配项,则所选选项将被选中SelectedListItem
,您可以在模型中添加 属性:
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
。
我的模型中有一个字符串和一个列表属性
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
中得到值 "Milk"、"tea" 和 "coffee"。当它与 属性 值
DropdownlistFor
中设置所选选项
有点像
if _drinktype = milk
然后 dropdownlistFor 将自动加载并选择 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)
编辑: 因为你有 Text
属性 并且如果 Value
中有匹配项,则所选选项将被选中SelectedListItem
,您可以在模型中添加 属性:
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
。