C# ASP.NET核心标识导航栏布局未正确呈现
我正在创建我的第一个ASP.NET核心MVC项目,它可以被(荷兰)公司用来出租房间/公寓 我首先用2个DatabaseContext设置了我的项目,1个名为AuthDBContext的项目存储了用户信息,1个数据库上下文位于名为DatabaseContext的核心下 在我不得不为项目添加授权之前,一切都很顺利。因为用户和数据存储在不同的DBContext中,所以我认为合并这两个上下文会更容易 为此,我手动将所有文件从Areas文件夹复制到Core文件夹中,我在其中创建了相同的文件夹。在搜索功能的帮助下,我将对Area/Areas的所有引用更改为Core,一段时间后,我成功地使登录再次工作,并将所有数据存储在1个上下文中 但问题是,一旦我按下登录或注册按钮,导航栏的样式就会消失,我的项目名称在左上角显示为dat,而不是项目名称 这是正确的导航栏: 这是不正确的导航栏: 如果我在没有登录的情况下返回主页,则当我登录并转到任何不涉及登录或注册的页面时,导航栏的样式已正确设置(例如转到主页/索引、Gebouw/索引或Kamer/索引)但是,如果我转到与身份验证相关的任何页面,导航栏都无法获得正确的样式 我检查了项目的早期版本,其中样式正确,并更改了所有布局参考以匹配正确的文件 这是我参考布局的文件,文件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文件夹中,我在其中创建了相同的文件夹。在搜索功能的
/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”;}
@{
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的样式,但不能设置整个导航栏的样式