Установка различных значений по умолчанию для выпадающих списков из списка выбора

#c# #asp.net-mvc

#c# #asp.net-mvc

Вопрос:

У меня есть контроллер, который выдает a SelectList для представления, которое затем отображает несколько DropDownLists для a SelectList . Теперь я хочу DropDownLists , чтобы по умолчанию были выбраны разные значения. Есть ли какой-нибудь способ сделать это?

Редактировать: О, и, конечно, значения, которые я хочу использовать по умолчанию, доступны из моей модели, например Model.Dj1_Id , etc.

Контроллер:

     [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 s

Ответ №2:

В списке выбора есть конструктор, в который вы можете передать выбранный объект, поэтому:

 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);
  

В любом случае должно сработать.