Was ist die Ausführungsreihenfolge im Umgang mit .NET MVC 2 -Aktionsfiltern?
-
24-10-2019 - |
Frage
Sag ich habe:
[Attribute1(Order=0)]
public class Controller1
{
[Attribute2]
[Attribute3]
public ActionResult Action1() { ... }
}
Die Attribute werden in der folgenden Reihenfolge ausgeführt: 2, 3, 1
Dies ist sinnvoll, da die Attribute 2 und 3 eine Reihenfolge von -1 haben und vor Attribut 1 ausgeführt werden, der eine explizit festgelegte Reihenfolge gleich 0 hat.
Nehmen wir jetzt an, ich habe:
[Attribute1]
[Attribute2(Order=0)]
public class Controller1
{
[Attribute3]
public ActionResult Action1() { ... }
}
Die Attribute werden in der folgenden Reihenfolge ausgeführt: 1, 2, 3
Warum wird das Attribut 2 in diesem Fall (die eine Reihenfolge von 0 entspricht) vor Attribut 3 ausgeführt wird (was eine Reihenfolge von -1 entspricht)?
Lösung
Sie sollten in der Bestellung 1, 3, 2 ausgeführt werden, so wie Sie vorgeschlagen hatten. Und in der Tat führen sie in der richtigen Reihenfolge auf meiner Maschine aus.
Können Sie die Definitionen Ihrer drei Attribute bereitstellen? Hier könnte noch etwas im Spiel sein.