Ich habe folgende Voraussetzung:
Bei jeder Anforderung meiner Webseite muss ich unabhängig von der Aktion, die der Benutzer aufrufen möchte, einen Code aufrufen, der prüft, ob eine Ressource vorhanden ist. Wenn ja, dann ist alles in Ordnung und die Aktionsmethode sollte wie üblich aufgerufen werden.
Wenn diese Ressource jedoch nicht verfügbar ist, möchte ich, dass alle Anforderungen eine separate Seite zurückgeben, in der der Benutzer aufgefordert wird, eine andere Ressource aus einer Liste verfügbarer auszuwählen.
Ist es also möglich, dass eine Methode vor einer Aktionsmethode ausgeführt wird, die den Aufruf der Aktionsmethode aufheben und stattdessen etwas anderes tun kann?
Sehen Sie sich globale Aktionsfilter an (verfügbar seit asp.net mvc 3): Ссылка
Grundsätzlich können Sie in Global.asax den Filter während des Starts Ihrer Anwendung (in Application_Start ()) global mit:
registrieren %Vor%Sie können dann die OnActionExecuting-Methode überschreiben und die Result-Eigenschaft mit RedirectToRouteResult festlegen.
%Vor%MVC bietet mehrere Möglichkeiten, dies zu tun.
In einem Basis-Controller können Sie Controller.OnActionExecuting(context)
überschreiben, das ausgelöst wird, bevor die Aktion ausgeführt wird. Sie können context.Result
auf ein ActionResult (wie RedirectToAction) setzen, um die Aktion zu überschreiben.
Alternativ können Sie eine ActionFilterAttribute
erstellen und genau wie oben die Methode OnActionExecuting
überschreiben. Dann wenden Sie das Attribut nur auf jeden Controller an, der es benötigt.
Tags und Links asp.net-mvc asp.net-mvc-3 .net asp.net