4

我正在编写一个 Blazor 应用程序,显然我想在其中呈现一些组件。我刚刚尝试在我的主布局中添加一个基本的导航元素,但它没有呈现。我可以在 DOM 上看到该元素,但该元素是空的。

我从我试图包含在 MainLayout.cshtml 中的 NavMenu 组件中开始使用一些相当简单的内容:

<h1>WHYYYY????</h1>

我还在 MainLayout.cshtml 页面上做了一个非常简单的布局:

@inherits BlazorLayoutComponent


<NavMenu />

<div class="body-content">
    @Body
</div>

我项目中的文件结构似乎并不复杂:

在此处输入图像描述

因此,我对自己忽略的内容感到茫然。看起来 Blazor知道它应该向页面呈现某些内容 - 这就是为什么我可以在 DOM 中看到 NavMenu 元素的原因。但是该元素内永远不会呈现任何内容。少了什么东西?

NavMenu Blazor 组件

我正在运行 Blazor 的最新(在撰写本文时)版本:0.5.1。

4

2 回答 2

4

您可能遇到了 .csproj 文件的错误。它应该如下所示:

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

<PropertyGroup>
   <TargetFramework>netstandard2.0</TargetFramework>
   <RunCommand>dotnet</RunCommand>
   <RunArguments>blazor serve</RunArguments>
   <LangVersion>7.3</LangVersion>
</PropertyGroup>

<ItemGroup>
  <PackageReference Include="Microsoft.AspNetCore.Blazor.Browser" Version="0.5.1" />
  <PackageReference Include="Microsoft.AspNetCore.Blazor.Build" Version="0.5.1" />
  <DotNetCliToolReference Include="Microsoft.AspNetCore.Blazor.Cli" Version="0.5.1" />
</ItemGroup>

你的很可能有额外的东西,这会阻止组件编译。这通常在添加文件或复制文件时发生。请参阅:https ://github.com/aspnet/Blazor/issues/1206

于 2018-08-12T08:08:39.663 回答
2

事实证明,根本原因与命名空间和大小写有关。

当我最初设置项目时,我使用 VS Code 中的命令行创建了它。出于习惯,我把所有东西都写成小写(即dotnet new blazor -o myapp)。

作为个人喜好,我喜欢我的命名空间是标题大小写,所以一段时间后我决定“整理”并更改myappMyapp. 我通过代码重构了新的标题名称并编译了所有内容,所以我继续工作......直到几周后我回去对一个组件做一些工作并注意到它没有表现出来。

事实证明,razor 页面会根据文件夹自动命名空间,其中的一个子集包含在_ViewImports.cshtml页面中。该文件仍然引用小写名称空间,并且寻找小写项目根目录的页面不再能够找到正确的共享组件。

所以毫不奇怪,这完全是自己造成的问题,是的,我从一开始就没有正确考虑它,我觉得很愚蠢。

于 2018-08-22T09:47:15.543 回答