我在填充MVC3中的下拉列表時遇到了一些問題。我希望有人能夠幫助我。在MVC3中填充DropDownList?
我想呈現一個包含城市DropDownList的用戶視圖。這應該從數據庫中提取。實際上,User類具有City類的ForeignKey。
下面是控制器和視圖:
public ViewResult Index()
{
//return View(model);
var DefaultCities = new[]
{
new {Name = "London"}
}.ToList();
IEnumerable<SelectListItem> cities = unitOfWork.CityRepository.Get() as IEnumerable<SelectListItem>;
ViewData["AllCities"] = cities != null ? new SelectList(cities.AsEnumerable(), "CityID", "Name") : new SelectList(DefaultCities.AsEnumerable(), "Name");
return View(unitOfWork.UserRepository.Get(orderBy: us => us.OrderByDescending(u => u.ID)).OfType<User>().ToList());
}
//觀
<div class="editor-field">
@Html.DropDownList(**"CityID"**, ViewData["AllCities"] as SelectList, "--Choose One--"))
@Html.ValidationMessageFor(model => model.CityID)
</div>
但顯示以下錯誤:
有型的無ViewData的項目「 IEnumerable'具有關鍵'CityID'。
這是我第一次參加MVC! 'CityID'是指什麼?我應該寫什麼作爲@Html.DropDownList
的第一個參數?
正如我已閱讀不同的文章,提到的論點應該是表單字段的名稱。
任何人都可以提示示例代碼? 任何幫助,將不勝感激。
請您提上查看正確的代碼? – Ali
如果您在控制器中使用我的第一個代碼片段,您可以保持視圖中的代碼與您目前的代碼相同。如果你使用我的第二個代碼片段,你需要更新你的視圖中的DropDownList幫助器調用,如我的答案中所示,以便使用「IEnumerable」。 –
我想知道錯誤是如何出現的。我完全按照你所說的完成了。 – Ali