Существует ли стандартный способ реализации формы редактирования для объекта, который использует коллекции в ASP.NET MVC2? - PullRequest
2 голосов
/ 06 мая 2011

Учитывая чрезвычайно простой объект с только полями, например:

class Contact {

   string firstName;
   string lastName;
   DateTime birthday;
   ...
}

Когда вы добавляете строго типизированный View с содержимым представления «Create», вы получаете хорошую форму со всеми полями вашего объектакоторый передает форму обратно контроллеру и т. д., и жизнь в порядке.

Однако, когда объект становится немного более сложным, например, мы хотим сохранить адреса электронной почты для контактов (и, конечно, контакт может, конечно,иметь более одного адреса электронной почты):

class Contact {

   string firstName;
   string lastName;
   DateTime birthday;
   ICollection<EmailAddress> emailAddresses;
   ...
}

Теперь, когда вы добавляете строго типизированное представление с представлением «Создать», вы получаете ту же форму, что и раньше, и коллекция не представляется в формелюбым способом.

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

Существует ли стандартный наилучший способ сделать это в ASP.NET MVC2?Если так, что это?

Ответы [ 2 ]

2 голосов
/ 06 мая 2011

MVC3 справляется с этим намного лучше, но поскольку вы используете MVC2, взгляните на Подробное сообщение Стива Сандерсона о редактировании списка переменной длины в стиле ASP.NET MVC 2 .

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

2 голосов
/ 06 мая 2011

Ну, вполне возможно, что весь ваш вид может быть

HTML.EditorForModel()

Если вы следуете ответу, который я отправил на Как отобразить содержимое кэша asp.net? , чтобы позволить Редактору совершить глубокое погружение против вашей модели.

Это не оптимальное решение. Управление списком данных в MVC является СЛОЖНЫМ. Главным образом из-за многих лет разработки ASP.NET мы настолько отвлеклись от сети, что идеи редактирования клиентской части списка легко теряются.

Для работы со списками вам, скорее всего, также понадобится работать с шаблонами клиентов, чтобы можно было легко добавлять новые элементы и удалять элементы. Это может быть очень сложным из-за того, что MVC требует, чтобы все списки были проиндексированы и следовали численно, в противном случае при отправке сообщений у вас будут отсутствовать элементы (за исключением: Мне кажется, это было ужасное дизайнерское решение )

Теперь, с учетом сказанного, я бы порекомендовал взглянуть на платформы KnockoutJS и KnockoutMapping , которые с комбинацией шаблонов jQuery и jQuery позволят вам создать очень богатый опыт работы с клиентами , К сожалению, это, скорее всего, будет очень радикальным отходом от вашего существующего стиля разработки, однако я считаю, что то, что Knockout приносит на стол, является революционным и откроет Интернет намного дальше для разработчиков ASP.NET MVC.

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