我使用强类型视图,其中所有viewmodel都继承了一个类Baseviewmodel.
在装饰所有控制器的ActionFilter中,我想使用Model.@H_301_3@
现在我只能像这样访问它:@H_301_3@
public override void OnActionExecuting(ActionExecutingContext filterContext) { viewmodelBase model = (viewmodelBase)filterContext.ActionParameters["viewmodel"]; base.OnActionExecuting(filterContext); }
问题是,我必须知道密钥“viewmodel”.关键是viewmodel,因为在我的控制器中我用过:@H_301_3@
是否有更安全的方式来访问模型?@H_301_3@
解决方法
OnActionExecuting在Action执行之前工作 – 因此Model被设置为null.您可以在OnActionExecuted中访问ViewData(或ViewData.Model):
public override void OnActionExecuted(ActionExecutedContext filterContext) { var model = filterContext.Controller.ViewData.Model as YourModel; ... }
希望这可以帮助@H_301_3@