从动作过滤器传递值后,ViewBag在Layout中返回null

问题描述

我制作了一个动作过滤器,并在.net core 2.2应用程序中对其进行了全局设置。 该动作过滤器旨在获取值并将其传递到ViewBag中,该ViewBag用于其他视图所继承的Layout视图。这个动作过滤器会获取值并将其传递到我的ViewBag中,但是ViewBag仍然在布局视图中返回null。

这是动作过滤器

 public override async void OnResultExecuting(ResultExecutingContext context)
    {
        SomeAppSettingClass = new SomeAppSettingClass()
        {
            token = configuration.GetValue<string>("SomeAppSettingClass:token") 
        };
        
        IOptions<SomeAppSettingClass> settingsAccessor = Options.Create(appSetting);

        if (context.Controller is Controller)
        {
            var controller = context.Controller as Controller;
            
            var companyClient = new CompanyClient(settingsAccessor);
            var companyInfo = await companyClient.GetById(); //this always returns a value
            controller.ViewBag.Company = companyInfo;
        }
        base.OnResultExecuting(context);
    }

这就是我在版式中的用法

<h3>@ViewBag.Company.CompanyName</h3>

这就是我在启动页面中全局提供ActionFilter的方式。

services.AddMvc(options =>
        {
            options.Filters.Add(new MyActionFilter(Configuration));
        });

为什么ViewBag返回null?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)