Ich möchte einige Dinge über den Status der Sitzung, der Benutzer-Agent, etc. überprüfen, und möglicherweise Maßnahmen ergreifen und eine spezielle Ansicht zurück, bevor eine Controller-Methode eine Chance zur Ausführung bekommt. Zum Beispiel:Wie bekomme ich bestimmten Code, der vor jeder einzelnen Controlleraktion in ASP.NET MVC 2 ausgeführt werden soll?
Meistgenannte:
Benutzer fordert Home/Index
System prüft, um sicherzustellen, dass x = 0 zu machen
x ist nicht gleich Null, so dass der Home/Index-Controller ausführt wie normal!.
Aber manchmal:
Benutzer fordert Home/Index
System prüft, dass x zu machen = 0.
x gleich Null TUT!. Der Benutzer muss benachrichtigt werden und die angeforderte Controller-Aktion darf nicht ausgeführt werden.
I denken Dies beinhaltet die Verwendung von ActionFilters. Aber ich habe über sie gelesen und ich verstehe nicht, ob ich die Controller-Methode vorwegnehmen und eine Ansicht zurückgeben kann, bevor sie ausgeführt wird. Ich bin sicher, ich könnte Code ausführen, bevor die Controller-Methode ausgeführt wird, aber wie kann ich verhindern, dass sie in einigen Instanzen ausgeführt wird und eine benutzerdefinierte Ansicht zurückgibt oder direkt auf eine andere Controller-Methode verweist?
Update: Ich implementierte die RM-Lösung. Das ist, was ich tat:
public class MyAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (myValue == wrongValue)
{
filterContext.Result = new ViewResult{ViewName = "Notice"};
}
base.OnActionExecuting(filterContext);
}
}
Nun, wenn myValue falsch ist, diese Benutzer erhalten die Mitteilung Ansicht und die angeforderte Controller wird nie ausgeführt. Um dies zu erreichen, habe ich es auf eine ControllerBase angewendet, von der alle meine Controller erben.
Hallo Chris. Lass mich wissen, wie bist du dazu gekommen? –