Я создаю приложение MVC для планирования, и у меня есть 3 класса CodeFirst EF6 в конфигурации «многие ко многим», причем средняя таблица содержит дополнительную информацию, такую как время, дату и т. д. встречи между хозяином и их посетителями. Я создал ViewModel, чтобы позволить мне создавать хосты, посетителей и собрания на одной странице вместо того, чтобы идти на каждую страницу отдельно, чтобы создать необходимые ресурсы для собрания. Контроллер и вид для этой компоновки порождают несколько вопросов.Включить поле без базы данных в верхней части окна SelectList for Razor в MVC 5
Я передаю, используя ViewBag, а SelectList к представлению
ViewBag.HostID = new SelectList(db.Hosts.OrderBy(x => x.Name), "id", "Name");
и
ViewBag.VisitorID = new SelectList(db.Visitors.OrderBy(x => x.LastName).
ThenBy(y => y.FirstName), "id", "VisitorName");
которая успешно оказывается на мой взгляд, Razor с помощью
<div class="form-group">
@Html.LabelFor(model => model.HostID, "HostID", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("HostID", null, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.HostID, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.VisitorID, "VisitorID", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("VisitorID", null, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.VisitorID, "", new { @class = "text-danger" })
</div>
</div>
Однако, Я хотел бы иметь возможность выбрать строку в DropDownList, которая не имеет связанного с ней HostID или VisitorID. h, чтобы затем я мог ввести нового Хоста или Посетителя и чтобы мой контроллер создал необходимые записи, когда форма отправлена обратно.
Таким образом, мой вопрос заключается в том, как добавить поле базы данных в верхнюю часть SelectList, которое будет означать контроллер (однажды отправленный назад), чтобы новая запись была создана вместо ссылки на существующий узел использоваться?
После создания 'SelectList', используйте' .ToList() 'на полученном' IEnumerable '' и использовать Insert() ', чтобы за -pend новый 'SelectListItem'. Но неясно, как вы собираетесь это использовать. Вы не знаете какую-либо информацию о« Хосте »или« Посетителе »из опубликованных данных, так что бы вы вставляли в базу данных? –
В файле Razor есть дополнительные элементы формы, которые потребовали бы заполнения, если бы посетитель, не входящий в список, был необходим. –
Тогда вы можете просто сделать это в соответствии с первым комментарием (или 'ViewBag.HostID = новый List