В моем текущем проекте я столкнулся с этой проблемой и не смог найти быстрый способ создать раскрывающийся список отношений один-много внутри одной из моих сущностей.
То, что я закончил, было похоже на следующее:
1 - Создать обычный AddView => Создать путь.
2 - Если у меня было свойство ID в моем классе модели, шаблон defaul; t сгенерирует что-то вроде этого, чтобы представить это свойство на мой взгляд:
<div class="editor-label">
@Html.LabelFor(model => model.CityID)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.CityID)
@Html.ValidationMessageFor(model => model.CityID)
</div>
3 - Теперь мне нужно заменить этот шаблон по умолчанию на рабочий, поэтому я написал этот код в методе CREATE
:
IEnumerable<SelectListItem> cityItems = dataContext.Cities.AsEnumerable().Select(c => new SelectListItem()
{
Text = c.Name,
Value = c.ID.ToString(),
Selected = false,
});
SelectList cityList = new SelectList(cityItems, "Value", "Text");
ViewBag.CityList = cityList;
это приведет к извлечению таблицы городов и созданию списка выбора, который я могу передать моему представлению и работать с ним, чтобы обеспечить DrobDown с его элементами.
4 - заменить код по умолчанию в моем представлении следующим:
<div class="Post-label">
<div class="editor-label">
@Html.LabelFor(model => model.CityID)
</div>
<div class="editor-field">
@Html.DropDownListFor(m => m.CityID, ViewData["CityList"] as SelectList)
@Html.ValidationMessageFor(model => model.CityID)
</div>
</div>
Причина, по которой я использовал ViewData["CityList"]
вместо ViewBag.CityList
, заключается в том, что этот работает, а другой нет.
5 - теперь мой вид работает с поиском и получает данные City
точно так же, как я ожидал, и использование той же модели в моем Edit
виде привело к работе тоже.
Попробуйте и дайте мне знать, что произошло, спасибо.