2008-12-16 31 views
5

Quiero ir más allá del manejo de errores predeterminado dado en ASP mvc. Tengo un controlador de errores, así que espero poder dar diferentes mensajes de error de acuerdo con lo que sucedió: argumentos inválidos, Permiso denegado, OMG DATABASE DEAD, etc.Manejo de errores personalizados en ASP MVC

Pero no puedo entender cómo hacerlo, esto es Lo que he intentado:

[HandleError(View="/Errors/InvalidArgument",ExceptionType=typeof(ArgumentException))] 

Termina dando un Runtime Error.

Además, sobre el mismo tema, es posible añadir más parámetros que podía pasar al controlador de error, tales como:

[HandleError(View="/Errors/InvalidArgument",ExceptionType=typeof(ArgumentException), Error="dumb arguments")] 

Gracias

+0

+1 para 'OMG DATABASE DEAD' y también necesitan la ayuda exacta. –

Respuesta

2

Sólo especifique el nombre de vista, no es camino ... en cuanto a pasar argumentos, no creo que puedas.

+0

Lo intenté, no funcionó ... ¿cómo iba a saber a qué controlador ir de todos modos? – qui

+0

No irá a un controlador, irá a la vista. Si desea ir a un controlador específico, tendrá que atrapar la excepción y redirigirse (creo). Puede usar TempData para almacenar los detalles de la excepción. Es posible que pueda escribir un ActionFilter para hacer el trabajo ... – Kieron

+0

No "va a un controlador". Simplemente especifica un nombre de vista, como dijo Kieron. Mira el código fuente; es trivial. El nombre de vista se resuelve como cualquier otro nombre de vista, primero en el controlador actual y luego en shared (en el WebForms ViewEngine predeterminado, de todos modos). –