我使用强类型视图,其中所有ViewModel都继承了一个类BaseViewModel.
在装饰所有控制器的ActionFilter中,我想使用Model.
现在我只能像这样访问它:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
ViewModelBase model = (ViewModelBase)filterContext.ActionParameters["viewModel"];
base.OnActionExecuting(filterContext);
}
Run Code Online (Sandbox Code Playgroud)
问题是,我必须知道密钥"viewModel".关键是viewModel,因为在我的控制器中我用过:
返回视图("MyView",viewModel)
是否有更安全的方式来访问模型?
eu-*_*-ne 14
OnActionExecuting在Action执行之前工作 - 因此Model被设置为null.您可以在OnActionExecuted中访问ViewData(或ViewData.Model):
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
var model = filterContext.Controller.ViewData.Model as YourModel;
...
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助
| 归档时间: |
|
| 查看次数: |
3916 次 |
| 最近记录: |