gpt4 book ai didi

c# - OnActionExecuting 在开始行动之前添加到模型

转载 作者:太空狗 更新时间:2023-10-29 17:51:02 28 4
gpt4 key购买 nike

我有以下内容:

 public override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);

if (filterContext == null)
{
throw new ArgumentNullException("filterContext");
}

var model = filterContext.Controller.ViewData.Model as BaseViewModel;

if (model == null)
{
model = new BaseViewModel();
filterContext.Controller.ViewData.Model = model;
}

model.User = (UserPrincipal)filterContext.HttpContext.User;
model.Scheme = GetScheme();
}

现在逐步执行,我可以看到正在填充模型上的用户和方案。

当我开始操作时,它们都为空?

我做错了什么?

此外,这是添加到模型的正确方法吗?

Controller 代码如下:

[InjectStandardReportInputModel]
public ActionResult Header(BaseViewModel model)
{
//by this point model.Scheme is null!!

}

最佳答案

Controller.ViewData.Model 未在 asp.net mvc 中填充操作参数。该属性用于将数据从操作传递到 View 。

如果出于某种原因您不想使用自定义模型绑定(bind)器(这是在 asp.net-mvc 中填充操作参数的标准推荐方式),您可以 ActionExecutingContext.ActionParameters Property

    public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.ActionParameters["model"] = new BaseViewModel();
// etc
}

关于c# - OnActionExecuting 在开始行动之前添加到模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9215291/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com