Привязка модели MVC3 к списку выбора

Я использовал функцию MVCScaffolding для создания пользовательского интерфейса CRUD для моих данных, хранящихся с использованием EF4.1.

Он хорошо подходит для базовых сценариев и привязывает все данные к текстовым полям.

Однако я хочу, чтобы свойство "Title" моего объекта "Person" было привязано к списку выбора. Я надеялся не создавать модель представления, а придерживаться привязки представления к фактической модели человека.

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))

Но я получаю «Ссылка на объект не указывает на экземпляр объекта». исключение при попытке обновить запись.

Как я могу заставить это работать с минимальным нарушением работы моей модели или контроллера?


person FloatLeft    schedule 01.05.2011    source источник


Ответы (1)


Первый должен быть правильным. Проверяли ли вы, прежде чем ваш контроллер вернет представление, действительно ли в поле «Заголовок» указано что-то, что существует в базе данных. Также проверьте орфографию и, например. точка позади текста. Если в вашей базе данных "Ms." присутствует, раскрывающийся список откроется для первого элемента, так как г-жа не существует в списке.

person bart s    schedule 27.07.2011