なぜこのBlazorアプリのコンポーネントがレンダリングに失敗するのですか?

asp.net-core blazor

質問

私はBlazorアプリを書いています。明らかに、そこにレンダリングされたコンポーネントをいくつか取得したいのです。私はちょうど私のメインレイアウトに基本的なナビゲーション要素を追加しようとしましたが、それはレンダリングではありません。私はDOM上の要素を見ることができますが、その要素は空です。

私は、MainLayout.cshtmlに含めることを試みているNavMenuコンポーネントで、かなり単純なコンテンツを使い始めました。

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

私はまた、私のMainLayout.cshtmlページでかなりシンプルなレイアウトを取ってきました:

@inherits BlazorLayoutComponent


<NavMenu />

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

私のプロジェクトのファイル構造は複雑ではないようです。

ここに画像の説明を入力

だから、ここで私が見落としてきたことについて私はここにいる。 Blazorはページにレンダリングするべきものがあることを知っているように見えます。そのため、DOMのNavMenu要素を見ることができます。しかし、その要素の内部にレンダリングされるコンテンツは決してありません。何が欠けている?

NavMenuブレザーコンポーネント

私はBlazorの最新バージョン(執筆時点で)を実行しています:0.5.1。

受け入れられた回答

根本原因は名前空間とケーシングに関連していたことが判明しました。

私が最初にプロジェクトをセットアップしたとき、VSコードのコマンドラインを使ってプロジェクトを作成しました。習慣から、私は小文字ですべてを書きました(つまり、 dotnet new blazor -o myapp )。

個人的な好みとして、私は自分のネームスペースをタイトルにするのがMyappです。 Myapp 、私は "整理して" myappMyapp変更することに決めました。私はリファクタリングして新しいタイトルケース名とすべてのものをコンパイルしていたので、私は作業を続けました...数週間後、私はコンポーネントにいくつかの作業をするために戻り、動作していないことに気付きました。

かみそりページはフォルダに基づいて自動的に名前空間が付けられ、そのサブセットは_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
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow