如果我的所有操作都有一个继承自BaseViewModel的模型,是否可以从OnActionExecuting方法初始化此模型?
目前我的所有行动都是这样做的:
var model = new SomeModel();
model.User = Users.Get(...);
现在我在OnActionExecuting中加载用户对象,所以我希望我能以某种方式从那里设置我的模型。
答案 0 :(得分:2)
您无法在OnActionExecuting中执行此操作,因为此时您不知道要使用哪个BaseViewModel子类。但是,您可以在OnActionExecuted中更新模型,该模型在操作方法之后但在渲染视图之前运行。
您很可能只在视图中填充这些属性,但如果您确实需要在操作方法中访问它们,可以将它们放入ViewAag或OnActionExecuting中的控制器属性,并将它们添加到OnActionExecuted中的模型中< / p>