C# ASP.NET核心标识导航栏布局未正确呈现

C# ASP.NET核心标识导航栏布局未正确呈现,c#,css,asp.net-core,asp.net-core-mvc,asp.net-identity,C#,Css,Asp.net Core,Asp.net Core Mvc,Asp.net Identity,我正在创建我的第一个ASP.NET核心MVC项目,它可以被(荷兰)公司用来出租房间/公寓 我首先用2个DatabaseContext设置了我的项目,1个名为AuthDBContext的项目存储了用户信息,1个数据库上下文位于名为DatabaseContext的核心下 在我不得不为项目添加授权之前,一切都很顺利。因为用户和数据存储在不同的DBContext中,所以我认为合并这两个上下文会更容易 为此,我手动将所有文件从Areas文件夹复制到Core文件夹中,我在其中创建了相同的文件夹。在搜索功能的

我正在创建我的第一个ASP.NET核心MVC项目,它可以被(荷兰)公司用来出租房间/公寓

我首先用2个DatabaseContext设置了我的项目,1个名为AuthDBContext的项目存储了用户信息,1个数据库上下文位于名为DatabaseContext的核心下

在我不得不为项目添加授权之前,一切都很顺利。因为用户和数据存储在不同的DBContext中,所以我认为合并这两个上下文会更容易

为此,我手动将所有文件从Areas文件夹复制到Core文件夹中,我在其中创建了相同的文件夹。在搜索功能的帮助下,我将对Area/Areas的所有引用更改为Core,一段时间后,我成功地使登录再次工作,并将所有数据存储在1个上下文中

但问题是,一旦我按下登录或注册按钮,导航栏的样式就会消失,我的项目名称在左上角显示为dat,而不是项目名称

这是正确的导航栏:

这是不正确的导航栏:

如果我在没有登录的情况下返回主页,则当我登录并转到任何不涉及登录或注册的页面时,导航栏的样式已正确设置(例如转到主页/索引、Gebouw/索引或Kamer/索引)但是,如果我转到与身份验证相关的任何页面,导航栏都无法获得正确的样式

我检查了项目的早期版本,其中样式正确,并更改了所有布局参考以匹配正确的文件

这是我参考布局的文件,文件
/Verhuurlijst/Core/identity/Pages/Account/manage/\u Layout.cshtm

@{
if (ViewData.TryGetValue("ParentLayout", out var parentLayout))
    {
        Layout = (string)parentLayout;
    }
    else
    {
        Layout = "/Views/Shared/_Layout.cshtml";
    }
}
  • /Verhuurlijst/Core/identity/Pages/ViewStart.cshtml:

    @{Layout=“/Views/Shared/_Layout.cshtml”}

  • /视图/ViewStart.cshtml:

    @{Layout=“\u Layout”;}

我尝试在Core/Identity/Pages/文件夹中创建自己的_布局页面,并在其中复制/Views/Shared/_Layout.cshtml的内容,并将Manage/_布局文件中的引用更改为-Verhuurlijst/Core/Identity/Pages/Account/Manage/_Layout.cshtm:

@{
    if (ViewData.TryGetValue("ParentLayout", out var parentLayout))
    {
        Layout = (string)parentLayout;
    }
    else
    {
        Layout = "/Core/Identity/Pages/_Layout.cshtml";
    }
}
但这并没有改变任何事情,我尝试在登录和注册页面中引用/Views/Shared/_Layout.cshtml文件,但这也没有改变任何事情

我尝试清理解决方案并重建一个,多次清除缓存,将Core/Identity/Pages/Account/Manage/_Layout.cshtml中的代码更改为只使用
Layout=/Views/shared/_Layout
而不是if/else块。但似乎什么都不管用

在调试器中,加载应用程序或页面时不会生成错误

我已经被这个问题困扰了6个多小时,我不知道如何解决这个问题

有人知道如何解决这个问题吗

通过以下链接,您可以访问该项目:

我试图添加原始的源代码管理链接,但由于该链接受组织的密码保护,因此我无法共享直接链接,而是压缩了文件并将其添加到新的repo。 压缩的文件太大了,所以我不得不把它分成不同的包。希望这不会造成任何问题

如果有人需要更多的信息、源代码或任何可以随意询问的东西,我会每天多次查看这篇文章,以提供任何需要的信息

更新: 在我的Verhuurlijst.csproj中,我发现

    <Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
    <CopyRefAssembliesToPublishDirectory>false</CopyRefAssembliesToPublishDirectory>
    <UserSecretsId>639ee4f0-8e5c-4a28-b85c-9b133d303b57</UserSecretsId>
    <AssemblyName>dat</AssemblyName>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="DataTables-Editor-Server" Version="2.0.2" />
    <PackageReference Include="jQuery" Version="3.6.0" />
    <PackageReference Include="jquery.datatables" Version="1.10.15" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.Facebook" Version="5.0.5" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.Google" Version="5.0.5" />
    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="5.0.4" />
    <PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="5.0.4" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="5.0.6" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="5.0.4" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.ViewFeatures" Version="2.2.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.5" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.4" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.4">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="5.0.1" />
    <PackageReference Include="Microsoft.Extensions.Options" Version="5.0.0" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="5.0.2" />
    <PackageReference Include="System.Data.SqlClient" Version="4.8.2" />
    <PackageReference Include="X.PagedList.Mvc.Core" Version="8.0.7" />
  </ItemGroup>

  <ItemGroup>
    <Folder Include="Migrations\AuthDB\" />
  </ItemGroup>

</Project>

net5.0
假的
639ee4f0-8e5c-4a28-b85c-9b133d303b57

当我更改程序集名称时,项目将不再打开,并收到一条错误消息:

对程序集的唯一其他引用位于IdentityHostingStartup文件中:

[assembly:HostingStartup(typeof(Verhuurlijst.Core.Identity.IdentityHostingStartup))]
namespace Verhuurlijst.Core.Identity
{
    public class IdentityHostingStartup : IHostingStartup
    {
        public void Configure(IWebHostBuilder builder)
        {
            builder.ConfigureServices((context, services) => {
                services.AddDbContext<DatabaseContext>(options =>
                    options.UseSqlServer(
                        context.Configuration.GetConnectionString("Main")));


            });
        }
    }
}
[程序集:HostingStartup(typeof(Verhuurlijst.Core.Identity.IdentityHostingStartup))]
命名空间Verhuurlijst.Core.Identity
{
公共类标识hostingstartup:IHostingStartup
{
公共void配置(IWebHostBuilder)
{
builder.ConfigureServices((上下文,服务)=>{
services.AddDbContext(选项=>
options.UseSqlServer(
GetConnectionString(“Main”);
});
}
}
}

导航栏中的
dat
是什么?您的项目中是否包含
dat
?默认情况下,导航栏位于
视图/Shared/\u LoginPartial.cshtml
中。您可以在布局.cshtml的
中看到
。您可以选中登录部分的
\u LoginPartial.cshtml
。登录部分没有布局参考,但即使我添加了一个,也不会改变导航栏的任何内容,我可以在导航栏中设置login或register的样式,但不能设置整个导航栏的样式