代码之家  ›  专栏  ›  技术社区  ›  giorgian

ASP.NET MVC:在重定向和抛出HttpException时不执行actionfilters

  •  0
  • giorgian  · 技术社区  · 17 年前

    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() {...};
        }
    }
    

    如何避免在重定向时填充ViewModel?

    1 回复  |  直到 17 年前
        1
  •  2
  •   Craig Stuntz    17 年前

    一个简单的解决方案是在模型不存在时不填充模型:

    ViewModel model = ViewData.Model as ViewModel;
    if (model != null)
    {    
        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() {...};
    }