Vinicius Quaiato

{tecnologia, conceitos, negócios, idéias, práticas, .NET, ruby, osx, ios e algo mais}

ASP.NET MVC controlando a ordem dos action filters


Fuçando na lista de discussões da Caelum sobre o Restfulie comecei a me perguntar como definir a ordem em que os action filters são executados no ASP.NET MVC.Bom, é algo bastante simples e fácil, vejamos:

public class HomeController : Controller{    [SomeFilter]    [AnotherFilter]    
public ActionResult Index()    {
return View();
    }
}

Criei dois action filters.aspx) e apliquei na action Index do meu Home Controller. O ASP.NET MVC não garante a ordem em que os filters de um mesmo tipo são executados. Existe uma ordem para filters serem executados mas esta ordem diz respeito a filters de tipos diferentes, veja aqui.Desta forma se temos um ou mais action filters(ou mais de um filter de outro tipo qualquer) e queremos que eles sejam executados em uma ordem específica precisamos utilizar sua propriedade Order.aspx).Vamos então setar esta propriedade:

public class HomeController : Controller{    [SomeFilter(Order = 2)]    [AnotherFilter(Order = 1)]    
public ActionResult Index()    {
return View();
    }
}

Pronto. Agora estamos explicitamente dizendo que o action filter AnotherFilter deve ser executado primeiro, e depois o action filter SomeFilter.Estes valores podem ser utilizados em ordem de grandeza ou seja poderiam ser utilizados os valores 5 e 6, 10 e 11, 3 e 4. Funcionaria da mesma maneira.Simples não? Tá aí a dica.

Att, Vinicius Quaiato.

Voltar

Fork me on GitHub