在我目前的项目中,我遇到了这个问题,无法找到一个快速的方法来在我的一个实体内搭建一对多关系的下拉列表。
我最终什么事做是这样的:
1-创建正常AddView =>创建方式。
2 - 如果我在我的模型类ID属性,则defaul;吨模板会产生这样的事情来代表这个属性在我看来:
<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-现在我需要更换这个
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:有工作的一个默认模板,所以我在CREATE
方法写了这个代码它的项目。
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
视图中使用相同的模型也导致了工作。
试试看,让我知道发生了什么,谢谢。
感谢您的回复。我知道如何手工编写代码,我只是想了解为什么自动脚手架不适用于这种情况 – ChrisCa 2011-04-17 12:51:19