在编辑菜单中设置模型的下拉列表值

时间:2017-11-21 15:59:04

标签: razor model-view-controller

我在我的视图中填充了一个下拉列表。

<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会起作用,但它总是默认显示列表中的第一个?

1 个答案:

答案 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,该列表将用于构建选项