我一直在使用MVCScaffolding功能为使用EF4.1存储的数据创建CRUD UI
它适用于基本场景,并将所有数据绑定到文本框。
但是,我希望我的“Person”对象的“Title”属性绑定到选择列表。我希望不必创建一个View Model,而是坚持将视图绑定到实际的Person Model。
public class Person {
public string Title { get; set; }
.......
这是在我看来,但所选项目无法正确绑定。它总是将“Mr”显示为所选项目,即使实际数据可能不同。
@Html.DropDownListFor(model => model.Title, new SelectList(new[] { "Mr", "Mrs", "Ms", "Miss", "Sir", "Dr", }, Model.Title))
这也不起作用:
@Html.DropDownList("Title", new SelectList(new[] { "Mr", "Mrs", "Ms", "Miss", "Sir", "Dr", }, Model.Title))
但是,这样做:
@Html.DropDownList("TitleX", new SelectList(new[] { "Mr", "Mrs", "Ms", "Miss", "Sir", "Dr", }, Model.Title))
但我得到一个“对象引用未设置为对象的实例”。尝试更新记录时出现异常。
如何才能让我的模型或控制器受到最小干扰?
答案 0 :(得分:0)
第一个应该是正确的。如果Title字段确实设置为数据库中存在的内容,您是否在控制器返回视图之前进行了检查。还要检查拼写和文字背后的一个点。如果在你的数据库中“女士”如果存在,则下拉列表将在第一个项目上打开,因为列表中不存在女士。