Использование динамического списка флажков в представлении, как создать модель - PullRequest
3 голосов
/ 07 января 2010

У меня есть приложение asp mvc 2, в котором я хочу отобразить список флажков, которые может выбрать пользователь, на основе списка записей в базе данных. Для отображения списка моя модель содержит объект List, а представление имеет foreach и выводит Html.CheckBox для каждого элемента в списке.

Есть ли способ заполнить модель выбранными флажками, учитывая, что модель не может иметь определенные свойства для каждого флажка, поскольку список является динамическим? Или я должен сам вручную перебирать переменные форм?

Редактировать: дополнительные детали согласно комментарию sabanito Таким образом, в простом сценарии представления / модели, если моя модель имеет свойство с именем Property1, то мое представление выводит текстовое поле для Property1, когда форма публикуется с помощью кнопки отправки, инфраструктура mvc автоматически заполнит модель Property1, содержащим текст который был введен в текстовое поле, и передайте эту модель в действие Controllers.

Поскольку я имею дело с динамическим списком параметров, которые пользователь может проверить, я не могу написать явные логические свойства в моей модели и явно создать флажки в моем представлении. Учитывая, что мой список динамический, мне интересно, есть ли способы создания моей модели и представления, чтобы инфраструктура mvc могла правильно заполнять модель при публикации формы.

Ответы [ 2 ]

3 голосов
/ 07 января 2010

Вот что я бы сделал:

Есть ли у вас какие-либо проблемы с динамическим генерированием флажка?

Если нет, создайте свойство на вашей ViewModel, которое будет:

public List<string> CheckboxResults { get; set; }

Когда вы создаете свои чекбоксы в представлении, убедитесь, что все они имеют одинаковое имя = "CheckboxResults". Когда MVC увидит вашу ViewModel в качестве параметра метода действия, он автоматически свяжет и поместит все результаты «CheckboxResults» в список (а также другие ваши свойства ViewModel). Теперь у вас есть динамический список, основанный на том, какой флажок ваш пользователь проверил, который вы можете отправить в вашу DomainModel или куда угодно.

Довольно классные вещи. Дайте мне знать, если у вас есть проблемы, генерирующие флажок динамически, это своего рода отдельная проблема, чем привязка модели к списку.

1 голос
/ 07 января 2010

Используйте ViewModel, которая точно отражает ваше представление, и сопоставьте модель (ы) вашего домена с моделью представления.

Поначалу часто кажется уместным использовать доменные модели непосредственно в представлении, не по какой-то лучшей причине, чем то, что они просты в использовании. Однако, по мере того, как представление со временем становится все более сложным, вы в конечном итоге добавляете ТОННУ условную логику и получаете спагетти. Чтобы облегчить это, мы обычно создаем ViewModel, который соотносит 1: 1 с представлением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...