#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);
В любом случае должно сработать.