我有一个使用许多标准功能的MVC 5应用程序。我在应用程序中有许多正确呈现的下拉列表,除了一个。
在控制器中:
ViewBag.TitleLookup = new SelectList(db.TitleLookups, "Title", "Title", person.Title);
return View(person);
在视图中:
@Html.DropDownList("Title",(SelectList)ViewBag.TitleLookup,string.Empty)
@Html.DropDownList("TitleLookup", string.Empty)
两个下拉列表都会正确呈现选项,但是,第一个没有正确选择的项目。第二个名称错误,因此不会在帖子上提交给服务器,但它确实具有“有效”属性,表明验证处于活动状态。
我已经逐步完成了控制器,并且SelectListItems正确构建,并且正确的Item上的selected属性设置为True。
所以问一个具体的问题:为什么第一个下拉列表没有呈现正确的选定项目?对于拥有名为“Title”的财产确实有些疯狂吗?
如果我绝对需要,我可以更改数据模型,但感觉它应该可以在不执行此操作的情况下工作。
答案 0 :(得分:0)
看起来你已经投入了#34; Title"对于选择列表上的第二个和第三个参数。这些参数用于复杂对象以选择那些属性,如果您要绑定到字典,请说Key和Value(我假设db.TitleLookups是一个字符串列表)。相反,试试这个:
new SelectList(db.TitleLookups, person.Title);
此外,MVC可能存在以ViewData / ViewBag属性命名的控件的问题。请参阅:ASP.NET MVC Html.DropDownList SelectedValue