MVC下拉列表在为Title属性传递SelectList而不是full-auto时不选择值

时间:2014-05-04 13:41:09

标签: c# asp.net asp.net-mvc razor asp.net-mvc-5

我有一个使用许多标准功能的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”的财产确实有些疯狂吗?

如果我绝对需要,我可以更改数据模型,但感觉它应该可以在不执行此操作的情况下工作。

1 个答案:

答案 0 :(得分:0)

看起来你已经投入了#34; Title"对于选择列表上的第二个和第三个参数。这些参数用于复杂对象以选择那些属性,如果您要绑定到字典,请说Key和Value(我假设db.TitleLookups是一个字符串列表)。相反,试试这个:

new SelectList(db.TitleLookups, person.Title);

此外,MVC可能存在以ViewData / ViewBag属性命名的控件的问题。请参阅:ASP.NET MVC Html.DropDownList SelectedValue