【问题标题】:How to use Session in Models in MVC .NET Core 2.2如何在 MVC .NET Core 2.2 的模型中使用 Session
【发布时间】:2019-12-15 19:37:05
【问题描述】:

我想在 MVC .NET Core 2.2 项目中使用 Session,但不仅在 Controller 中,而且在 Model 中。

有一些示例可以显示控制器中的用法,但我没有找到有关如何访问模型类中的会话的任何信息。另外我需要说的是,模型不在 Web 项目中,而是在单独的类库项目中。

这个问题有合适的答案或解决方案吗?

【问题讨论】:

    标签: session asp.net-core-mvc


    【解决方案1】:

    通常不建议在类库中使用会话。您最好将特定值传递给您的库调用,或者只传递整个IHttpContextAccessor 以在模型类中获取HttpContext

    因此,您无需访问库方法中的设置,而是:

    1.类库。

    1) 为您的类库安装以下软件包:

    <ItemGroup>
        <PackageReference Include="Microsoft.AspNetCore.Http" Version="2.2.0" />
        <PackageReference Include="Microsoft.AspNetCore.Http.Extensions" Version="2.2.0" />
     </ItemGroup>
    

    2) 型号:

    using Microsoft.AspNetCore.Http;
    using System;
    
    namespace ClassLibrary1
    {
        public class Product
        {
            private readonly IHttpContextAccessor _contextAccessor;
    
            public Product(IHttpContextAccessor contextAccessor)
            {   
                _contextAccessor = contextAccessor;       
                Name = _contextAccessor.HttpContext.Session.GetString("your session key");
            }
    
            public string Name { get; set; } 
        }
    }
    

    2.Web 应用程序。

    1) Startup.cs

    services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
    

    2) 控制器:

    public class HomeController : Controller
    {
    
        private readonly IHttpContextAccessor _httpContextAccessor;
        public HomeController(IHttpContextAccessor httpContextAccessor)
        {
            _httpContextAccessor = httpContextAccessor;
             var product = new ClassLibrary1.Product(_httpContextAccessor );
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-01
      • 2019-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-28
      相关资源
      最近更新 更多