我在我的视图中填充了一个下拉列表。
<div class="form-group">
@Html.LabelFor(model => model.AmPm, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.AmPm, new List<SelectListItem>
{
new SelectListItem{Text="AM", Value="1"},
new SelectListItem{Text="PM", Value="2"},
new SelectListItem{Text=@"N\A", Value="3", Selected=true},
}, new { id = "amPmDropDownSelect", @class = "form-control" })
@Html.ValidationMessageFor(model => model.AmPm, "", new { @class = "text-danger" })
</div>
</div>
当我来编辑一个有值的记录时,我希望在模型中存储的值上选择下拉列表。没有jquery可以做到这一点吗?
在空模型上加载下拉列表时,我想要&#34; Text = @&#34; N \ A&#34;,Value =&#34; 3&#34;选择值并认为添加Selected = true会起作用,但它总是默认显示列表中的第一个?
答案 0 :(得分:1)
您可以在GET操作中将视图模型的AmPm
属性设置为您要选择的选项的值。
public ActionResult Edit(int id)
{
var vm = new YourViewModel();
vm.AmPm="3";
return View(vm);
}
现在DropDownListFor
辅助方法将选择值为&#34; 3&#34;的选项项。
如果AmPm
属性的类型为int
,则可以设置int值。
vm.AmPm=3;
您可以从实体中读取值并将其设置为3而不是硬编码,例如
public ActionResult Edit(int id)
{
var e=db.Tasks.Find(id);
var vm = new YourViewModel() { Title = e.Title };
vm.AmPm = e.AmPm; // This line sets the selected value
return View(vm);
}
此外,您现在可以从要添加到列表中的第三个Selected=true
对象中删除SelectListItem
,该列表将用于构建选项