Estoy trabajando en una aplicación web que implica que el usuario complete un formulario de varios pasos que abarca varias páginas. El formulario tiene navegación con pestañas en la parte superior (estos enlaces no envían la página actual) y un siguiente botón en la parte inferior (que envía). Estoy considerando varias estrategias para el manejo de formulario de presentación/validación: MétodoMejores prácticas/diseño para un formulario de varias páginas en .NET MVC3
una acción y la vista por página de formulario. Cuando pulse siguiente, envía el formulario al método de acción para la página siguiente. Si hay errores de validación, se le redirige a la página anterior:
- de URL son descriptivos y puede ser distribuido, copiado-pegado
- Sólo vuelve a dirigir en el caso de error
- Desde la redirección no tiene la forma de datos, se pierde el contexto de la presentación que hace que sea difícil de visualizar ciertos mensajes de error
- la misma lógica de validación trabaja para redirigir al usuario si intentan visitar un paso en el flujo que no están listos para todavía
un método de acción y vista por página de formulario. Cuando presiona siguiente, envía el formulario a la acción de la página actual. Si hay errores de validación, se devuelve la misma vista. De lo contrario, redirigimos a la acción siguiente página:
- de URL son descriptivos y se puede copia pegada-
- redirecciones son muy comunes (no estoy seguro si esto es malo)
- Cuando se muestran los errores de validación, estamos en la misma petición que el envío del formulario por lo que tenemos acceso completo a la entrada no válida
- tienen que pasar un contexto adicional si queremos que la capacidad de, por ejemplo, añadir un botón "Anterior", que también presenta
un método de acción para TODAS las páginas. Las URL contienen un contexto adicional sobre el paso que se envía (por ejemplo,
MyController/MyAction/{step}
). El mensaje del controlador selecciona la página de visualización para regresar dependiendo de la validación y el paso actual.- URL no son descriptivos (por ejemplo, si presento el paso 1 para ir al paso 2, a continuación, la URL que ve el usuario será el mismo, independientemente de si se devuelve la página 1 (no válido) o en la página 2
- n redirige
- Cuando se muestran los errores de validación, estamos en la misma petición que el envío del formulario por lo que tenemos acceso completo a la entrada no válida
Un método diferente que no he enumerado aquí
me han tratado de enumerar lo que veo como algunos de los pros y los contras de cada método, pero me interesaría saber:
- ¿Cuáles son otras ventajas y desventajas de estos métodos? ¿Son los míos correctos? ¿Podrían diseñarse algunos de los contras que he enumerado?
- ¿Hay un enfoque estándar para este problema que debería estar usando?Si es así, ¿por qué es el enfoque estándar?
Parece que debe aceptar la noción de solicitudes de manejo de acciones y devolver (en la mayoría de los casos) vistas. Tener una acción por página de formulario le permite tener un modelo de vista específico para los datos en esa página. La acción puede devolver la misma vista si el modelo no es válido o la vista para la página siguiente. No se necesita redirigir Puede usar las entradas 'ocultas' en su' formulario' para pasar el contexto de una página a otra. – HABO
@HABO: pero si no redirijo y el usuario envía algo no válido en la página 1, ¿no seguirán viendo la URL de la página 2 aunque la vista devuelta sea la vista no válida de la página 1? – ChaseMedallion
Su acción selecciona la vista apropiada para regresar: página 1 o página 2. La forma de decidir depende de usted. El navegador muestra todo lo que obtiene, pero no necesita que se le pida que solicite una página diferente a través de un redireccionamiento. – HABO