Частичная проверка моделей ASP.NET MVC 3 - PullRequest
7 голосов
/ 06 марта 2011

У меня есть очень большая 60+ форма вопроса, которую пользователь может начать заполнять, сохранять в любой момент и оставлять ее в ожидании. Форма может быть загружена из базы данных и заполнена в любое время, а затем закрыта.

У меня есть следующая модель:

public class Questionnaire{

  [Required]
  public string Question1 { get; set; }

  [Required]
  [Range(1, 10)]
  public int Quesiton2 { get; set; }

  public string Question3 {get;set}
}

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

как лучше это реализовать?

Ответы [ 4 ]

2 голосов
/ 08 июля 2011

Из вашего вопроса / примера не совсем ясно, что именно вам нужно, но в целом я обнаружил, что разделение моих моделей просмотра в MVC - лучший способ приблизиться к такого рода вещам.

т.е. разделить вашу сущность на части, каждая из которых может быть проверена самостоятельно.

Затем используйте частичные представления / пользовательские шаблоны редактора для предоставления компонентов пользовательского интерфейса для каждого из них.

Затем вы можете объединить эти компоненты в одну форму, когда это необходимо, илипредоставляйте отдельные формы на одной странице, многостраничные мастера или одностраничные прогрессивные мастера AJAX или все, что вам нужно) по мере необходимости.

Сохраняет вещи СУХОЙ и простой.

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

Не ограничивайтесь вашими бизнес-объектами / объектами, когда вам необходимо их освободить - достаточно просто собрать части бизнес-объекта вместе из составляющей View Model куски.

1 голос
/ 07 июня 2011

Почему вы используете Вопрос1 .. Вопросн .. 1 объект на вопрос, что, если вы добавите новый вопрос? ... у вас должен быть Список вопросов, а затем проверка вручную перед сохранением в соответствии с вашими бизнес-правилами.

0 голосов
/ 07 сентября 2011

Исходя из идеи Bala R, было бы лучше выполнить условную проверку, основанную на том, какое действие вы выполняете, сохраняете или отправляете. Под этим я подразумеваю, что при сохранении проверяются только данные в полях, поэтому проверяйте пустые / пустые / стандартные значения и не проверяйте эти поля, а проверяйте поля в соответствии с правилами бизнес-логики / модели для тех, которые были введены .

Итак, скажем, у вас есть форма с именем, возрастом и полом, при попытке 1 пользователь заполняет свое имя как «1234», возраст как «12» и оставляет «секс» пустым, когда вы сохраняете, вам нужно чтобы пройти через каждый элемент управления и проверить те, которые имеют значения, в данном случае, имя и возраст, вы можете проверить имя и сообщить, что «1234» не является допустимым именем, но примите возраст как 12.

Возможно, вы бы лучше разместили эту серверную сторону, как если бы вы пытались проверить эту клиентскую сторону, было бы трудно различить обязательное поле, которое оставлено пустым, с намерением заполнить его позже, и поле, которое был оставлен пустым полной остановки. (Вы можете утверждать, что вам понадобится функция проверки Save () и Submit () на стороне клиента, чтобы обойти это, а также на стороне сервера).

0 голосов
/ 06 марта 2011

Вы можете иметь два отдельных действия Save () и Submit () и отключить проверку (или выполнить минимальную проверку) в Save ().

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