2009-08-21 10 views
2

betrachten die folgende Situation:Proper Ausnahmebehandlung mit ASP.NET MVC, ELMAH und benutzerdefinierten Fehlerseite

Es ist eine ASP.NET MVC-Anwendung, die ELMAH für die zentrale ExceptionLogging nutzt. Ein Controller ist mit dem HandlerError-Attribut gekennzeichnet, um einen bestimmten Typ einer Ausnahme abzufangen, und zeigt dem Benutzer eine Sicht an. Zum Beispiel

[HandleError(ExceptionType = typeof(ModelSpecificException), View = "Exceptions/ModelSpecific")] 
public partial class HeavyController : Controller 
{ 
    // Constructors and ActionResults are following here... 
} 

Dies funktioniert wie erwartet bisher. Das Problem, mit dem ich gerade konfrontiert bin, ist, dass die "ModelSpecific" Fehlerseite einige Objekte innerhalb der ViewData benötigt. Hat jemand einen Hinweis auf Bestücken der Viewdata Dictionary eines View von Typ folgenden

System.Web.Mvc.ViewPage<HandleErrorInfo> 

Eine andere Idee hat, die zu meinem mein Sinn kommt ist, dass vielleicht ein Controller für die Errorhandling mit entsprechenden ActionResults verwendet werden könnten. Aber zur Zeit weiß ich nicht, wie ich das erreichen soll.

Jede Hilfe sehr geschätzt ...

freundlichen Grüßen

Gordon

Antwort

0

Da sowohl Ihre Ausnahmeklasse und die Aussicht bestimmtes Modell sind, könnten Sie speichern die zusätzlichen Daten, die Sie in die Notwendigkeit Ausnahme selbst?

if(badCondition) 
{ 
    throw new ModelSpecificException("a bad thing happened", extraData); 
} 

Ihrer Ansicht nach können Sie die Ausnahme über Server.GetLastError() erhalten und warf sie dann auf den richtigen Typ der zusätzlichen Daten über Eigenschaften zuzugreifen. Dies könnte ein saubererer Ansatz sein, da die Ausnahme als Modell behandelt wird und Sie nicht in der ViewData-Auflistung enthalten sind.