MVC3模型绑定到选择列表

时间:2011-05-01 06:48:52

标签: asp.net-mvc asp.net-mvc-scaffolding

我一直在使用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))

但我得到一个“对象引用未设置为对象的实例”。尝试更新记录时出现异常。

如何才能让我的模型或控制器受到最小干扰?

1 个答案:

答案 0 :(得分:0)

第一个应该是正确的。如果Title字段确实设置为数据库中存在的内容,您是否在控制器返回视图之前进行了检查。还要检查拼写和文字背后的一个点。如果在你的数据库中“女士”如果存在,则下拉列表将在第一个项目上打开,因为列表中不存在女士。