我使用强类型视图,其中所有viewmodel都继承了一个类Baseviewmodel.
在装饰所有控制器的ActionFilter中,我想使用Model.
现在我只能像这样访问它:
public override void OnActionExecuting(ActionExecutingContext filterContext) { viewmodelBase model = (viewmodelBase)filterContext.ActionParameters["viewmodel"]; base.OnActionExecuting(filterContext); }
问题是,我必须知道密钥“viewmodel”.关键是viewmodel,因为在我的控制器中我用过:
return
View(“MyView”,
viewmodel)
是否有更安全的方式来访问模型?
解决方法
OnActionExecuting在Action执行之前工作 – 因此Model被设置为null.您可以在OnActionExecuted中访问ViewData(或ViewData.Model):
public override void OnActionExecuted(ActionExecutedContext filterContext) { var model = filterContext.Controller.ViewData.Model as YourModel; ... }
希望这可以帮助
原文地址:https://www.jb51.cc/aspnet/247815.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。