Я создал фильтр OnActionExecuted для заполнения некоторых атрибутов viewmodel данными из db (я не использую ViewData ["somekey"], предпочитая множество ViewModels, происходящих от общего предка).
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() {...};
}
}
Проблема в том, что когда действие приводит к перенаправлению или ошибке 404, OnActionExecuted пытается получить доступ к ViewModel, который не был инициализирован. Кроме того, заполнять эти значения совершенно бесполезно, поскольку они не будут использоваться, поскольку будет вызвано другое действие.
Как мне избежать заполнения viewodel при перенаправлении?