2009-10-13 4 views
18

È possibile rilevare le eccezioni nelle azioni del controller? C'è un modo migliore per farlo? In realtà sto recuperando le mie eccezioni nel controller e usando TempData per mostrare un messaggio all'utente, ma ho una strana sensazione riguardo questo approccio. Ho navigato in giro ma non ho trovato nulla che mi si addica.Gestione eccezioni ASP.NET MVC

+0

Questo è vecchio ma volevo solo fornire il mio post come riferimento (** problemi con HandleError **) mentre passo - http://stackoverflow.com/questions/12183653/mvc-handleerror-filter-didnt-catch-an-exception –

risposta

11

È possibile utilizzare l'attributo HandleError sulla classe controller per rilevare eventuali eccezioni non gestite e restituirà automaticamente la vista Error.aspx nella cartella Shared. Ci sono sovraccarichi di questo attributo in modo da avere solo usato per alcuni tipi di eccezione, ecc

Per ulteriori informazioni su questo approccio, controlla il post di ScottGu su di esso: http://weblogs.asp.net/scottgu/archive/2008/07/14/asp-net-mvc-preview-4-release-part-1.aspx

+0

Questo è interessante, ma il In alternativa, posso reindirizzare alle viste standard ("Indice" per esempio) e visualizzare un messaggio personalizzato per l'eccezione concreta ... –

+0

Le pagine Error.aspx sono legate alla classe HandleErrorInfo, che espone le proprietà dell'eccezione. Se stai inviando un messaggio di eccezione personalizzato, puoi renderlo visibile alla vista. Il libro di Steve Sanderson "Pro ASP.NET MVC Framework" illustra alcuni modi per farlo e anche come creare i propri filtri delle eccezioni. Consiglierei di prendere quel libro. – mkchandler

+0

Forse estendere HandleError per consentire la definizione del TempData? Penso che indagherò su questo. Grazie ... –