微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决从动作过滤器传递值后,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 举报,一经查实,本站将立刻删除。