J'ai créé un filtre OnActionExecuted pour remplir certains attributs viewmodel avec des données de db (je n'utilise pas ViewData ["somekey"], préférant plusieurs ViewModels descendant de un ancêtre commun).ASP.NET MVC: Ne pas exécuter les filtres d'action sur la redirection et lancer HttpException
public class BaseController : Controller
{
protected DataClassesDataContext context = new DataClassesDataContext();
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
ViewModel model = (ViewModel) ViewData.Model;
model.IsUserAuthenticated = filterContext.HttpContext.User.Identity.IsAuthenticated;
if (model.IsUserAuthenticated)
{
model.UserName = filterContext.HttpContext.User.Identity.Name;
}
model.CommonAttribute = from c in context.Something select new SomethingElse() {...};
}
}
Le problème est que lorsqu'un action se traduit par une redirection ou une erreur 404, OnActionExecuted tente d'accéder à ViewModel, qui n'a pas été initialisé. En outre, il est complètement inutile de remplir ces valeurs, car elles ne seront pas utilisées, puisqu'une autre action va être appelée.
Comment puis-je éviter de remplir le viewodel en cas de redirection?
pourquoi pas? Merci – giorgian