2010-03-18 6 views
12

Ich habe zwei benutzerdefinierte ActionFilter auf eine Aktion.Stop Fortsetzung von ASP.NET MVC ActionFilter

Im ersten der Actionfilter habe ich eine Umleitung durchgeführt, wenn eine Bedingung nicht erfüllt ist (klassische Berechtigung). Und in einem anderen habe ich eine Umleitung durchgeführt, wenn eine andere Bedingung nicht erfüllt ist (sagen wir Überprüfung der Rolle).

Aber ich möchte nicht mit dem zweiten actionFilter fortfahren, wenn der erste nicht erfüllt ist. Wie macht man das?

+0

Diese [Antwort] (https://Stackoverflow.com/a/9842910/2460971) auf eine ähnliche Frage geht ausführlicher. – numaroth

Antwort

21

Wenn Sie die Eigenschaft filterContext.Result auf einen Wert ungleich null setzen, wird die Ausführung späterer Filter gestoppt. Wenn also der erste Filter filterContext.Result = new RedirectResult(...) setzt, wird der zweite Filter und die zweite Aktion nie ausgeführt. So funktioniert der integrierte Filter [Authorization].

+7

Ich musste einfach zurück in ein MVC2-Projekt gehen, also lass es hier für den Fall, dass es noch jemand braucht: Wenn du die normale Funktionalität von 'return null' in deiner Action willst, kannst du filterContext.Result = new EmptyResult machen(); ' –

Verwandte Themen