首页 > 解决方案 > 登录.net core 3.1 Web应用程序后如何在startup.cs中设置全局数据?

问题描述

我的 .net core 3.1 Web 应用程序从用户必须登录开始,同时选择公司/分支机构(公司代码)。现在,我如何以及在何处保存此应用程序数据“CompanyCode”,以便在会话的其余部分使用。我想出了一种在 startup.cs 文件中设置其他静态全局变量(常量)的方法。

 public void ConfigureServices(IServiceCollection services)
        {
            Action<GlobalData> gData = (g =>
            {
                g.CompanyCode = 2;
                g.DummyCust = 3;
                g.Type_Personal = 0;
                g.Type_Asset = 1;
                g.Type_Bank = 2;

                g.Type_Customer = 1;
                g.Type_Staff = 2;

            });
            services.Configure(gData);
            services.AddSingleton(resolver => resolver.GetRequiredService<IOptions<GlobalData>>().Value);

            services.AddControllersWithViews();

            services.AddDbContext<ImgContext>(options => options.UseSqlServer(Configuration.GetConnectionString("ImgContext")));
        }

GlobalData 类定义:

namespace Imagetech.Data
{
    public class GlobalData
    {
        public int CompanyCode { get; set; }
        public int Type_Personal { get; set; }
        public int Type_Asset { get; set; }
        public int Type_Bank { get; set; }
        public int Type_Customer { get; set; }
        public int Type_Staff { get; set; }
        public int DummyCust { get; set; }
    }
}

现在 CompanyCode 是登录后要设置的动态全局数据;我怎样才能实现它?请帮忙。谢谢

标签: c#asp.net-coreglobal-variablesasp.net-core-3.1web-application-project

解决方案


现在,我如何以及在何处保存此应用程序数据“CompanyCode”,以便在会话的其余部分使用。

您还可以在登录控制器/剃须刀页面中使用 DI 来获取和设置CompanyCode,例如

public class AccountController : Controller
{
    private readonly IOptions<GlobalData> _globalData;

    public AccountController(IOptions<GlobalData> globalData)
    {
        _globalData = globalData;
    }

    [HttpPost]
    public IActionResult Login()
    {
       var originalData = _globalData.Value.CompanyCode;
       //after login successfully
       //replace below 100 with your selected `CompanyCode`,
       _globalData.Value.CompanyCode = 100

        return View();
    }
}

请参阅ASP.Net Core 2 中的全局变量


推荐阅读