【问题标题】:'HttpContextAccessor' does not contain a definition for 'Session'“HttpContextAccessor”不包含“Session”的定义
【发布时间】:2020-04-06 16:56:20
【问题描述】:

在我看来

@if(Model.Creator.UserId == Microsoft.AspNetCore.Http.HttpContextAccessor.Session["UserId"])
    {
        <a href="/events/@Model.EventId/edit" class="btn btn-success no-float inline">Edit</a>
        <form method="post" asp-action="Delete" asp-controller="home" asp-route-id="@Model.EventId" class="inline">
            <input type="submit" class="btn btn-danger" value="Delete">
        </form>
    }

在我的控制器中

using Microsoft.AspNetCore.Http;
...    
HttpContext.Session.SetInt32("UserId", UserInDb.UserId);

错误信息在View IF语句的Session下

【问题讨论】:

  • 您不需要在 Razor 视图中使用 HttpContextAccessor。您可以直接访问HttpContext 属性。

标签: c# asp.net .net asp.net-mvc asp.net-core


【解决方案1】:

您可以使用以下代码将 HttpContext 注入 Razor View:

@using Microsoft.AspNetCore.Http

...

@if(Model.Creator.UserId == Context.Session["UserId"])
    {
        <a href="/events/@Model.EventId/edit" class="btn btn-success no-float inline">Edit</a>
        <form method="post" asp-action="Delete" asp-controller="home" asp-route-id="@Model.EventId" class="inline">
            <input type="submit" class="btn btn-danger" value="Delete">
        </form>
    }

【讨论】:

  • 谢谢,这让我想出了如何让它在这个项目中工作!
【解决方案2】:

正如编译器所说,that class 没有任何东西称为Session。周围唯一的属性是HttpContext。

HttpContext 的类型又确实具有会话属性。并且该属性类型有一个索引器:https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.http.httpcontext.session

所以你想要的可能是:

Microsoft.AspNetCore.Http.HttpContextAccessor.HttpContext.Session["UserId"]

【讨论】:

    【解决方案3】:

    我最终能够在视图中使用以下内容访问 Session

    @if(Model.Creator.UserId == Context.Session.GetInt32("UserId"))
    {
        <a href="/events/@Model.EventId/edit" class="btn btn-success no-float inline">Edit</a>
        <form method="post" asp-action="Delete" asp-controller="home" asp-route-id="@Model.EventId" class="inline">
            <input type="submit" class="btn btn-danger" value="Delete">
        </form>
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多