Ich erstellte eine benutzerdefinierte Ausnahme und ich werfe eine Instanz dieser Klasse immer dann, wenn ich bedenke, dass meine Anwendung in einem "Ausnahmezustand" ist. Diese Ausnahme wird in einer Anwendungslogikklasse (in meinem Fall Dienst) ausgelöst. Jetzt habe ich auch die Standard - ASP MVC - Ausnahmeumleitung an Ort und Stelle, aber im Falle dieser benutzerdefinierten Ausnahmen möchte ich nicht, dass es auf die 'Error' Seite umleiten, sondern um eine Nachricht in einem div (z. B. in meine Layout.cshtml Seite). Ich dachte über das Hinzufügen der Ausnahmebedingungsnachricht zu TempData ["ApplicationError"] nach. Ich möchte diesen Code nur einmal schreiben, nicht alle meine Controller-Aktionsmethoden. Also, in meiner Basis-Controller Klasse überschrieben I protected void OnException (ExceptionContext filterContext) und mein Code sieht wie folgt aus:Benutzerdefinierte Ausnahmebedingungsnachricht in ASP MVC
protected override void OnException(ExceptionContext filterContext)
{
if (filterContext.Exception is InvalidOperationException)
TempData["ApplicationError"] = filterContext.Exception.Message;
else
base.OnException(filterContext);
}
Mein Problem ist, dass ich immer noch auf die Standardfehlerseite umgeleitet werden, wenn diese Ausnahme ausgelöst wird . Ich möchte nicht, dass das passiert. Was ich will, ist die Nachricht der benutzerdefinierten Ausnahme in einem freundlichen Div in der gleichen Ansicht anzuzeigen, auf der der Benutzer ist. Haben Sie Ideen, wie ich das erreichen kann?
Danke. Mein Problem mit diesem Ansatz ist, dass ich try-cacth-AddError in allen Methoden, die diese Ausnahme auslösen, kopieren/einfügen muss. Ich will das nicht. Ich brauche so etwas wie einen zentralen (infrastrukturellen) Ort, um das immer zu bewältigen. In den meisten Fällen habe ich nicht einmal ein Ansichtsmodell, das meine Ansichtsdaten unterstützt. –
Ein ViewModel ist eine bessere Idee, weil es stark typisierte Ansichten gibt. – Shyju
Ich brauche die VMs jetzt einfach nicht, besonders wenn sie mein Problem zu lösen scheinen. –