{tecnologia, conceitos, negócios, idéias, práticas, .NET, ruby, osx, ios e algo mais}
28/12/2010
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.