ASP.NET MVC 2 RC 2 «Мастер» для проверки всей модели - PullRequest
2 голосов
/ 08 февраля 2010

Хорошее простое решение для многостраничного элемента управления "Wizard" в MVC здесь:

http://www.highoncoding.com/Articles/647_Creating_Wizard_Using_ASP_NET_MVC_Part_1.aspx

http://www.highoncoding.com/Articles/652_Creating_Wizard_in_ASP_NET_MVC_Part_2.aspx

Модель заполняется в несколько этапов, и скрытое поле используется для сохранения данных между страницами (чем-то похоже на ViewState). Однако с выпуском MVC 2 RC2 механизм проверки был изменен с «проверки ввода» на «проверку модели»: http://bradwilson.typepad.com/blog/2010/01/input-validation-vs-model-validation-in-aspnet-mvc.html

Теперь первая страница в «Мастере» никогда не проверяется, поскольку она заполняет только часть модели. (Остальное заполняется во время дальнейших шагов, но, поскольку могут быть обязательные поля, ошибки проверки отображаются во время проверки для первой страницы, и пользователь не может продолжить).

Есть ли способ изменить эту реализацию "Wizard control", чтобы она соответствовала MVC RC2, или следует пересмотреть всю логику? Есть ли лучшие шаблоны для создания многостраничного «мастера управления» для заполнения модели?

Ответы [ 2 ]

3 голосов
/ 08 февраля 2010

Я кратко прочитал перечисленные статьи. Я думаю, проблема в том, что вы передаете объект домена (клиент в демоверсии) на оба экрана для редактирования. Половина клиента редактируется на первом экране, а другая половина редактируется на следующем экране.

Шаблон, который должен вам здесь помочь, заключается в том, что вместо того, чтобы передавать вашу фактическую модель (клиента) на презентацию, вы должны (ИМХО) только выдавать «модель представления». Это означает, что у каждого представления (или шага в мастере в этом случае) будет своя собственная модель. CustomerNameViewModel и CustomerAddressViewModel могут быть подходящими объектами для указанного руководства. Это будет означать, что каждый объект будет заполнен данными полностью, когда они вернутся для проверки. После того, как объект был надлежащим образом утвержден, вы можете заполнить свой объект клиента. После завершения объекта customer в конце мастера вы можете сохранить объект customer.

1 голос
/ 10 апреля 2010

Оформление заказа http://blog.stevensanderson.com/2010/02/19/partial-validation-in-aspnet-mvc-2/. Стивен показывает, как использовать ActionFilter для частичной проверки представления.

...