Pregunta

Estoy utilizando AjaxSubmit para publicar una forma y hay validaciones del lado del servidor usando hecho XVal (forma RuleException). No estoy usando la forma try / catch para agregar errores a modelo y luego enviar a la vista. En su lugar - Quiero usar el attibute HandleError y en el OnException estoy añadiendo los errores del modelo. El principal problema es cómo consigo esos errores como resultado la llamada Ajax?

¿Fue útil?

Solución

No hay una gran solución construida en este momento. Al hacer esto correctamente requiere un marco de validación del lado del cliente (porque, para mostrar los errores, es necesario cambiar dinámicamente la página HTML), y hasta hace poco, ASP.NET MVC no ha tenido eso. Sin embargo, ASP.NET MVC 2 2 Previsualización de validación en el cliente introducido, por lo que es razonable suponer que algo podría ser incorporado en el marco pronto.

En el ínterin, sin embargo, HandleErrorAttribute no le ayudará. HandleErrorAttribute sólo sabe cómo redirigir a una página de error, que por lo general no es lo que quiere hacer en respuesta a un error de validación en el servidor incluso con un POST "normal", y ciertamente no con un puesto de AJAX.

Hay realmente dos escenarios diferentes que usted necesita para manejar:

    errores
  1. La validación no son fallas catastróficas; son simplemente malos datos del usuario, lo que usted debe esperar. Usted sólo tiene que conseguir la parte posterior información a la página, por lo que la página se puede marcar para decirle al usuario cómo solucionar sus datos.
  2. También necesita para manejar los fallos catastróficos, como excepciones no previstas. Esto es similar a lo que hace HandleErrorAttribute, en la medida en que puede mostrar un mensaje a un usuario, pero no se puede coincidir necesariamente con ese mensaje con los campos específicos en su página.

Para manejar el primer escenario de error, es necesario envolver el modelo de estado arriba en un objeto que será apta para su procesamiento en el código JavaScript; JSON es la forma obvia aquí. A continuación, necesita tener código JavaScript del lado del cliente que analiza este objeto y marcas de los campos de formulario. Esto es más fácil si se ata en un marco de validación del lado del cliente existente, que ya contiene código para el marcado de los campos de formulario.

Para manejar el segundo tipo de error, se puede extender HandleErrorAttribute el fin de proporcionar JSON en lugar de HTML en el caso de un fallo catastrófico. Una vez más, tendrá que escribir el código JavaScript que se ejecutará en el caso de un fallo - ajaxError evento global de jQuery es útil en este caso - que detecta esta información de errores estructurado que ha creado y mostrar algún tipo de mensaje útil para el usuario .

Si todo esto suena un poco involucrados, así, que es, por lo que puede tener más sentido que esperar y ver lo que va a ser incorporado al MVC 2 es finalmente liberado.

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