Итак, допустим, у нас есть объект домена, такой как следующий
public class Person
{
public string Name { get; set; }
public IList<PhoneNumber> PhoneNumbers {get; set; }
public IList<Address> Addresses { get; set; }
}
Лицо недействительно до тех пор, пока не будут введены имя, номера телефонов и адреса. Как вы, ребята, справляетесь с этим, используя ASP.NET MVC и формы ...
Я думал, что вы можете сериализовать человека в сеанс и иметь несколько представлений для редактирования имени, добавления телефонных номеров, добавления адресов - действия контроллера изменят человека в сеансе, и последнее действие сохранения будет отправлено в базу данных.
Мне не очень нравится иметь несколько представлений и использовать сеанс. Другой вариант - иметь одну очень сложную форму, которая могла бы иметь «динамические» разделы элементов для добавления / удаления телефонных номеров, адресов в браузере перед отправкой в действие сохранения.
Что все делают со сложными объектами и редактируют через формы?
Спасибо!





Я обычно использую маршрут «динамический раздел».
Однако я бы не стал делать вашу проверку настолько строгой, чтобы пользователь не мог сохранить незавершенную работу. Ввод списка номеров телефонов, адресов и т. д. Может занять некоторое время. Конечному пользователю выгодно иметь возможность время от времени сохранять свою работу на случай, если он потеряет подключение к Интернету или что-то в этом роде. Вероятно, рекомендуется время от времени автоматически сохранять записи через AJAX, если ваша форма ввода данных довольно большая. (Как Gmail.) Таким образом, ваша модель должна позволять им время от времени сохранять незавершенную работу и выполнять всю проверку только тогда, когда они говорят, что они «готовы».
Джимми Нильссон выступает за сохранение в недействительном состоянии в статье «Применение дизайна и шаблонов, основанных на предметной области». Он выступает за то, чтобы вы могли сохранить свою работу в любое время, но что она должна пройти проверку перед переходом в принятое состояние.
AJAX ... ммм, пора попробовать AngularJS и WebApi. Публикация JSON-представления ваших моделей. Примечание. Если вы используете привязку MVC, чтобы в JSON также была «нотация массива» ....
Спасибо, Крейг, мне тоже нравится эта идея. Я думаю, что динамические формы намного проще с точки зрения конечного пользователя. Мой связыватель модели должен стать немного умнее, чтобы обрабатывать динамические поля, но я думаю, что мы можем заставить его работать.