Я пытаюсь выбрать несколько значений и назначить их списку выбора с определенным параметром / значением, которое затем передается через viewbag в мое представление, проблема, с которой я сталкиваюсь, заключается в структуре, когда она отображается и когда находится в режиме редактированиязначение предварительно не заполняется.
Я провел различные поиски, чтобы довести меня до этой точки, но большинство используют JQuery или другие фреймворки, я надеюсь остаться в C # / MVC, просто я сейчас не уверен вкакую фразу искать, чтобы найти существующее решение проблемы такого типа.
Кто-нибудь может дать мне несколько указателей?
Вид:
<div class="form-group">
@Html.LabelFor(model => model.employeeID, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.employeeID, ViewBag.employee as List<SelectListItem>, "Select", new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.employeeID, "", new { @class = "text-danger" })
</div>
</div>
Контроллер:
var employeeID = ((from x in dbdev.employeeDetails orderby x.employeeID select new { Name = x.employeeNumber + x.knownas + x.surname, Value = x.employeeID } ).Distinct()).ToList();
SelectList employeeIDList = new SelectList(employeeID);
ViewBag.employeeID = employeeIDList;
Модель:
[Required]
[Range(1, 2147483647)]
[Display(Name = "Employee ID")]
public int employeeID { get; set; }
Как только мой код отрендерен, выборка имеет следующую структуру
<option>{ Name = 568883PhilShort, Value = 1 }</option>
, но я на самом деле пытаюсь создать следующую структуру.
<option value="1">568883 Phil Short</option>
Ниже приведеномодификация из комментариев
Модель / HTML неизменна
Обновлен контроллер на основе комментариев:
var employeesList = (from x in dbdev.employeeDetails.AsEnumerable()
orderby x.employeeID ascending
select new
{
Name = String.Format("{0} {1} {2}", x.employeeNumber, x.knownas, x.surname),
Value = x.employeeID
}).ToList();
SelectList employeeIDList = new SelectList(employeesList, "Value", "Name", userAccess.employeeID);
ViewBag.employeeID = employeeIDList;
Затем, чтобы уменьшить код, я реорганизовал следующее:
ViewBag.employeeID = new SelectList((from x in dbdev.employeeDetails.AsEnumerable()
orderby x.employeeID ascending
select new
{
Name = String.Format("{0} {1} {2}", x.employeeNumber, x.knownas, x.surname),
Value = x.employeeID
}).ToList(), "Value", "Name", userAccess.employeeID);