為什麼Blazor應用程序中的組件無法呈現?

asp.net-core blazor

我正在寫一個Blazor應用程序,顯然我想要在那裡渲染一些組件。我剛剛嘗試在我的主佈局中添加一個基本的導航元素,但它沒有渲染。我可以看到DOM上的元素,但該元素是空的。

我在NavMenu組件中開始使用一些相當簡單的內容,我試圖將其包含在MainLayout.cshtml中:

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

我在MainLayout.cshtml頁面上也採用了一個非常簡單的佈局:

@inherits BlazorLayoutComponent


<NavMenu />

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

我項目中的文件結構似乎並不復雜:

在此處輸入圖像描述

所以我在這裡不知道我忽略了什麼。看起來Blazor 知道它應該呈現給頁面的東西 - 這就是我可以在DOM中看到NavMenu元素的原因。但是在該元素內部從未呈現過任何內容。少了什麼東西?

NavMenu Blazor組件

我正在運行最新的(在撰寫本文時)Blazor版本:0.5.1。

一般承認的答案

事實證明,根本原因與命名空間和套管有關。

當我最初設置項目時,我使用VS Code中的命令行創建它。出於習慣,我用小dotnet new blazor -o myapp了一切(即dotnet new blazor -o myapp )。

作為個人喜好,我喜歡我的名稱空間是標題,所以一段時間後我決定“整理”並將myapp更改為Myapp 。我通過代碼重構了新的標題名稱和編譯的所有內容,所以我繼續工作......直到幾週後我回去做一個組件的工作,發現它沒有表現。

事實證明,剃刀頁面會根據文件夾自動命名,其中一部分包含在_ViewImports.cshtml頁面中。該文件仍引用小寫命名空間,而尋找小寫項目根的頁面不再能夠找到正確的共享組件。

所以,毫無疑問,這是一個完全自我造成的問題,是的,我覺得從一開始就沒有正確地思考它是非常愚蠢的。


熱門答案

您可能遇到了.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




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因