Pregunta

No es una buena solución simple para un multi-página de control "Asistente" en MVC aquí:

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

El modelo se rellena en varios pasos y un campo oculto se utiliza para persistir datos entre páginas (algo similar a ViewState). Sin embargo, con la liberación de MVC 2 RC2, el mecanismo de validación se ha cambiado de "validación de entrada" a "validación del modelo": http: // bradwilson.typepad.com/blog/2010/01/input-validation-vs-model-validation-in-aspnet-mvc.html

Ahora, la primera página del "Asistente" nunca se pone validados, ya que sólo llena parte del modelo. (El resto es a poblarse durante otros pasos, pero ya que puede haber campos requeridos, los errores de validación se muestra durante la validación para la primera página y el usuario no puede proceder).

¿Hay una manera de modificar esta implementación del "control Wizard" para adaptarse MVC RC2, o debe ser re-pensado toda la lógica? ¿Hay mejores patrones para crear un multi-página "control Wizard" para poblar un modelo?

¿Fue útil?

Solución

He leído a través de los artículos que enumera brevemente. Creo que el problema es que usted está pasando un objeto de dominio (el cliente en la demo) a las dos pantallas de edición. La mitad de los clientes se edita en la primera pantalla y la otra mitad se edita en la siguiente pantalla.

El patrón que debe ayudarle aquí es que en lugar de pasar su modelo real (cliente) a la presentación que debe (en mi humilde opinión), sólo estar pasando a cabo una "vista del modelo". Esto quiere decir que cada vista (o paso en el asistente en este caso) tendrían su propio modelo. CustomerNameViewModel y CustomerAddressViewModel podrían ser objetos apropiados para el tutorial de la lista. Esto significaría que cada objeto se rellena con datos totalmente cuando regresan para su validación. Una vez que el objeto ha sido validado adecuadamente se podría llenar su objeto de cliente. Una vez que el objeto de cliente se completa al final del asistente usted entonces conservar el objeto cliente.

Otros consejos

http: // Blog .stevensanderson.com / 2010/02/19 / parcial-validación-in-aspnet-mvc-2 / . Steven muestra cómo utilizar un ActionFilter hacer la validación vista parcial.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top