在我目前的項目中,我遇到了這個問題,無法找到一個快速的方法來在我的一個實體內搭建一對多關係的下拉列表。
我最終什麼事做是這樣的:
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