在我当前的项目中,我遇到了这个问题,找不到一种快速的方法来搭建我的一个实体内的一对多关系的下拉列表。
我最终做了如下:
1- 创建普通的AddView=>创建方式。
2- 如果我的模型类中有 ID 属性,则默认模板将生成类似这样的内容来表示我认为的该属性:
<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;
这将获取 Cities 表并创建一个选择列表,我可以将其传递给我的视图并使用它为 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- 现在我的视图正在工作 find 并按照我的预期获取 City 数据,并且在我的 Edit 视图中使用相同的模型也得到了一个工作。
试一试,让我知道发生了什么,谢谢。