Was ist der Unterschied zwischen der Implementierung FilterAttribute, IActionFilter und Erben von ActionFilterAttribute in asp.net mvc-3?
Sehe ich, dass in einer situation, die wir überschreiben können OnActionExecuting
oder OnActionExecuted
Methoden Erben von ActionFilterAttribute
Klasse wie folgt aus:
public class MyFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{ //bla bla }
}
Und in anderen situation, die wir auch umsetzen können IActionFilter
und FilterAttribute
wie diese:
public class MySecondFilterAttribute : FilterAttribute, IActionFilter
{
public void OnActionExecuted(ActionExecutingContext filterContext) {}
}
So, gibt es irgendwelche Unterschiede zwischen diesen beiden Ansätzen, vielleicht irgendeine bestimmte Situationen, in denen wäre es besser, verwenden Sie einen über den anderen??
Vielen Dank im Voraus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Grundsätzlich FilterAttribute stellt die meisten low-level-Verhalten von MVC Attribute und implementiert die IMvcFilter sieht vor, dass die Bestellung und AllowMultiple Eigenschaften.
ActionFilterAttribute ist die Grundlage für das filtern von Aktionen und Ergebnisse, da eine Umsetzung von IActionFilter, IResultFilter und Erben von FilterAttribute.
Ihre MySecondFilterAttribute Umsetzung führt zu ActionFilterAttribute ohne IResultFilter Fähigkeiten (OnResultExecuting und OnResultExecuted).