2014-06-30 32 views
0

我有一个控制器,它给一个视图SelectList,然后为SelectList呈现多个DropDownLists。我现在想让DropDownLists具有不同的值以供默认选择。有没有办法做到这一点?从SelectList为DropDownLists设置不同的默认值

编辑:哦,当然,我想要默认的值可以从我的模型中获得。 Model.Dj1_Id

控制器:

[HttpGet] 
    public ActionResult EditPartyInfo(int ID) 
    { 
     Party prty = db.Partys.Find(ID); 
     ViewBag.People = new SelectList(db.People, "Id", "Name"); 
     return View(prty); 
    } 

查看:

@model Musa.Models.Party 

@using (Html.BeginForm("EditPartyInfo", "Events", FormMethod.Post)) 
{ 
    @Html.AntiForgeryToken() 
    <!-- Some text input fields --> 
    <div class="form-group"> 
     <label for="Dj1_Id">Dj 1</label> 
     <div class="form-inline"> 
      @Html.DropDownList("Dj1_Id", ViewBag.People as SelectList, String.Empty, new { @class = "form-control person-select", style = "width: 50%;" }) 
     </div> 
    </div> 
    <div class="form-group"> 
     <label for="Dj2_Id">Dj 2</label> 
     <div class="form-inline"> 
      @Html.DropDownList("Dj2_Id", ViewBag.People as SelectList, String.Empty, new { @class = "form-control person-select", style = "width: 50%;" }) 
     </div> 
    </div> 
    <div class="form-group"> 
     <label for="Dj3_Id">Dj 3</label> 
     <div class="form-inline"> 
      @Html.DropDownList("Dj3_Id", ViewBag.People as SelectList, String.Empty, new { @class = "form-control person-select", style = "width: 50%;" }) 
     </div> 
    </div> 
    <input type="submit" class="btn btn-primary" value="Los geht's" /> 
} 

我竟然落得这样做:

控制器:

[HttpGet] 
    public ActionResult EditPartyInfo(int ID) 
    { 
     Party prty = db.Partys.Find(ID); 
     ViewBag.People = db.People; 
     return View(prty); 
    } 

查看:

/*...*/ 
@Html.DropDownList("Dj1_Id", new SelectList(ViewBag.People, "Id", "Name", Model.Dj1_Id), String.Empty, new { @class = "form-control person-select", style = "width: 50%;" }) 
/*...*/ 
@Html.DropDownList("Dj2_Id", new SelectList(ViewBag.People, "Id", "Name", Model.Dj2_Id), String.Empty, new { @class = "form-control person-select", style = "width: 50%;" }) 
/*...*/ 
@Html.DropDownList("Dj3_Id", new SelectList(ViewBag.People, "Id", "Name", Model.Dj3_Id), String.Empty, new { @class = "form-control person-select", style = "width: 50%;" }) 

回答

1

请尝试;

代替

ViewBag.People as SelectList 

此;

new SelectList(ViewBag.People, "Id", "Name", "Id value to select") 

Html.DropDownList小号

1

的SelectList的第二个参数有一个构造函数,您可以在选定的对象传递,所以:

new SelectList(db.People, "Id", "Name", db.People.FirstOrDefault(x => x.Id == party.Dj1_Id) 

我个人比较喜欢使用IEnumerable<SelectListItem>像这样:

ViewBag.People = db.People.Select(x => new SelectListItem { Text = x.Name, Value = x.Id, Selected = x.Id == party.Dj1_Id); 

无论哪种方式应该工作。