C# 无法在AspNetCore 3.1的视图中插入扩展的IdentityUser

C# 无法在AspNetCore 3.1的视图中插入扩展的IdentityUser,c#,asp.net-core,claims-based-identity,C#,Asp.net Core,Claims Based Identity,我创建了一个ApplicationUser,它扩展了IdentityUser。现在我想在视图中显示/隐藏登录和注销。因此,我尝试在\u signipartial.cshtml视图中插入ApplicationUser,但ApplicationUser出现错误它表示找不到命名空间ApplicationUser的类型(是否缺少using指令或程序集引用) 我在互联网上发现了多个博客,他们的做法和我完全一样 ApplicationUser.cs public class ApplicationUser

我创建了一个
ApplicationUser
,它扩展了
IdentityUser
。现在我想在视图中显示/隐藏登录和注销。因此,我尝试在
\u signipartial.cshtml
视图中插入
ApplicationUser
,但ApplicationUser出现错误
它表示
找不到命名空间ApplicationUser的类型(是否缺少using指令或程序集引用)

我在互联网上发现了多个博客,他们的做法和我完全一样

ApplicationUser.cs

public class ApplicationUser : IdentityUser
{
}
我在
Startup.cs
中配置了
ApplicationUser
,如下所示:

services.AddIdentity<ApplicationUser, IdentityRole>()
    .AddEntityFrameworkStores<AppDbContext>();
services.AddIdentity()
.AddEntityFrameworkStores();
My _LoginPartial.cshtml看起来像:

@inject SignInManager<ApplicationUser> signInManager
@if (signInManager.IsSignedIn(User))
{
  <li class="nav-item">
    <form method="post" asp-controller="account" asp-action="logout">
        <button type="submit" style="width:auto"
                class="nav-link btn btn-link py-0">
            Logout @User.Identity.Name
        </button>
    </form>
  </li>
}
else
{
  <li class="nav-item">
    <a class="nav-link" asp-controller="account" asp-action="index">
        Login
    </a>
  </li>
}
@inject-SignInManager-SignInManager
@if(signInManager.IsSignedIn(用户))
{
  • 注销@User.Identity.Name
  • } 其他的 {
  • 登录
  • }
    我已经在
    \u ViewImports.cshtml
    视图中导入了
    Microsoft.AspNetCore.Identity
    OAuth2Demo.Models
    。 当我注入
    IdentityUser
    而不是
    ApplicationUser
    时,我可以完美地工作。我可以使用ApplicationUser执行其他操作,比如将用户存储在数据库中,获取用于其他目的的声明

    找不到命名空间ApplicationUser的类型(是否缺少using指令或程序集引用)

    我已经在_ViewImports.cshtml视图中导入了Microsoft.AspNetCore.Identity和OAuth2Demo.Models

    要解决此问题,请检查您的
    ApplicationUser
    类是否定义如下

    namespace OAuth2Demo.Models
    {
        public class ApplicationUser: IdentityUser
        {
            //...
            //properties here
            //...
    
    请注意,
    \u ViewImports.cshtml
    文件可以放置在任何文件夹中,在这种情况下,它将仅应用于该文件夹及其子文件夹中的页面或视图。因此,请确保在正确的
    \u ViewImports.cshtml
    文件中使用OAuth2Demo.Models添加

    此外,您可以尝试在
    \u signipartial.cshtml
    中指定一个完全限定名,然后检查它是否可以正常工作

    @inject SignInManager<OAuth2Demo.Models.ApplicationUser> signInManager
    
    @inject-SignInManager-SignInManager
    
    应用程序用户是否与
    \u LoginPartial
    位于同一命名空间中?如果没有,您可能需要使用
    语句为该名称空间添加一个
    。我已在_ViewImports.cshtml中添加了名称空间。您的意思是您添加了另外两个名称空间,但不是为
    应用程序用户添加的名称空间
    -如果您添加了更多名称空间,请通过将其添加到问题中来向我们展示。并且
    \u ViewImports.cshtml
    包含在
    \u LoginPartial.cshtml
    中。你漏掉了很多需要的信息来全面了解问题所在。事实上,我后来解决了这个问题。这和你说的原因是一样的。