私はBlazorアプリを書いています。明らかに、そこにレンダリングされたコンポーネントをいくつか取得したいのです。私はちょうど私のメインレイアウトに基本的なナビゲーション要素を追加しようとしましたが、それはレンダリングではありません。私はDOM上の要素を見ることができますが、その要素は空です。
私は、MainLayout.cshtmlに含めることを試みているNavMenuコンポーネントで、かなり単純なコンテンツを使い始めました。
<h1>WHYYYY????</h1>
私はまた、私のMainLayout.cshtmlページでかなりシンプルなレイアウトを取ってきました:
@inherits BlazorLayoutComponent
<NavMenu />
<div class="body-content">
@Body
</div>
私のプロジェクトのファイル構造は複雑ではないようです。
だから、ここで私が見落としてきたことについて私はここにいる。 Blazorはページにレンダリングするべきものがあることを知っているように見えます。そのため、DOMのNavMenu要素を見ることができます。しかし、その要素の内部にレンダリングされるコンテンツは決してありません。何が欠けている?
私はBlazorの最新バージョン(執筆時点で)を実行しています:0.5.1。
根本原因は名前空間とケーシングに関連していたことが判明しました。
私が最初にプロジェクトをセットアップしたとき、VSコードのコマンドラインを使ってプロジェクトを作成しました。習慣から、私は小文字ですべてを書きました(つまり、 dotnet new blazor -o myapp
)。
個人的な好みとして、私は自分のネームスペースをタイトルにするのがMyapp
です。 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