¿Cuál es una forma elegante de aprovechar los atributos existentes [HandleError] y [Authorize] cuando se trata de llamadas XHR desde javascript?asp.net mvc [handleerror] [autorizar] con JsonResult?
Por lo tanto, digamos, por ejemplo, un método GetJson que devuelve un JsonResult.
Cuando se produce un error, el método [HandleError] enviará un ViewResult que se recuperará en la función de devolución de llamada en javascript.
Me entonces tiene que colocar el código personalizado en todas partes en javascript para manejar y redirigir ningún tipo de accidentes, etc.
Lo que me gustaría hacer, es tener la [HandleError] atribuyen devolver un JsonResult si el original la acción estaba planeando hacer eso. Esto podría ser una ilusión de mi parte.
Del mismo modo, si aparece una solicitud Json no autorizada, en lugar de devolver un nuevo HttpUnauthorizedResult, me gustaría devolver un JsonResult que permita que mi código del lado del cliente maneje las cosas de manera común.
¿Estoy ladrando el árbol equivocado aquí? ¿Tal vez hay una manera aún más agradable de que MVC pueda manejar esto que no conozco?
¿Cómo están manejando este escenario otras personas?
Gracias.
PD: Me doy cuenta de que puedo crear mis propios atributos [HandleJsonError] y [AuthorizeJson] que devuelven JsonResults en lugar de ViewResults, pero luego tendría que dar la vuelta y colocarlos en cualquier método que devuelva Json, y preocuparme por Orden de filtro, etc. Seguramente estaría bien si pudiera usar la reflexión o algo para que el mismo atributo actúe de manera diferente dependiendo de la firma del método original.
Gracias! Request.IsAjaxRequest() es muy útil. No sabía que existía. – Scott
Es un método de extensión que MVC agrega. En realidad, no es parte de Request. –
¡Gracias! Esa es una forma muy elegante y debe marcarse como la respuesta correcta. El constructor no es necesario sin embargo. –