Вы можете передать выбранное значение в качестве 4-го аргумента конструктора SelectList:
var query = newdb.Incident.Select(c => new { c.ID, c.Name });
ViewBag.items = new SelectList(query.AsEnumerable(), "ID", "Name", "4");
, а также, по вашему мнению, убедиться, что вы используете другое значение в качестве первого аргумента для помощника DropDownList, потому что прямо сейчасвы используете "items"
, что неверно, поскольку первый аргумент представляет имя сгенерированного выпадающего списка, который будет использоваться обратно в контроллере для получения выбранного значения:
@Html.DropDownList(
"selectedIncidentId",
(SelectList) ViewBag.items,
"--Select a Incident--"
)
Также я бы порекомендовал вам использоватьпросмотр моделей и строго типизированной версии помощника DropDownListFor:
public class IncidentsViewModel
{
public int? SelectedIncidentId { get; set; }
public IEnumerable<SelectListItem> Incidents { get; set; }
}
, а затем:
public ActionResult Foo()
{
var incidents = newdb.Incident.ToList().Select(c => new SelectListItem
{
Value = c.ID.ToString(),
Text = c.Name
});
var model = new IncidentsViewModel
{
SelectedIncidentId = 4, // preselect an incident with id = 4
Incidents = incidents
}
return View(model);
}
и в строго типизированном представлении:
@model IncidentsViewModel
@using (Html.BeginForm())
{
@Html.DropDownListFor(
x => x.SelectedIncidentId,
Model.Incidents,
"--Select a Incident--"
)
<button type="submit">OK</button>
}