Warum können Komponenten in dieser Blazor App nicht gerendert werden?

asp.net-core blazor

Frage

Ich schreibe eine Blazor App und natürlich möchte ich einige Komponenten darin rendern lassen. Ich habe gerade versucht, ein grundlegendes Navigationselement zu meinem Hauptlayout hinzuzufügen, aber es wird nicht gerendert. Ich kann das Element im DOM sehen, aber dieses Element ist leer.

Ich ging mit einigen ziemlich einfachen Inhalten, um mit meiner NavMenu-Komponente zu beginnen, die ich versuche, in MainLayout.cshtml aufzunehmen:

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

Ich habe auch ein ziemlich einfaches Layout auf meiner MainLayout.cshtml Seite gemacht:

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

Die Dateistruktur in meinem Projekt scheint unkompliziert zu sein:

Bildbeschreibung hier eingeben

Ich bin also ratlos, was ich übersehen habe. Es sieht so aus, als ob Blazor weiß, dass etwas auf der Seite gerendert werden soll - deshalb kann ich das NavMenu-Element im DOM sehen. Aber in diesem Element wird niemals Inhalt wiedergegeben. Was fehlt?

NavMenu Blazor Komponente

Ich betreibe die neueste (zum Zeitpunkt des Schreibens) Version von Blazor: 0.5.1.

Akzeptierte Antwort

Es stellt sich heraus, dass die Ursache mit Namespaces und Cases zusammenhängt.

Als ich das Projekt ursprünglich eingerichtet habe, habe ich es über die Befehlszeile in VS Code erstellt. Aus Gewohnheit habe ich alles in Kleinbuchstaben geschrieben ( dotnet new blazor -o myapp ).

Als persönliche Präferenz mag ich, dass meine Namespaces in den myapp von Myapp , also beschloss ich einige Zeit später, " myapp " und myapp zu Myapp zu Myapp . Ich ging durch den Code, um den Namen des neuen Titelnamens und alles Kompilierte umzuformatieren, also arbeitete ich weiter ... bis nach ein paar Wochen, als ich zurückging, um an einer Komponente zu arbeiten, und bemerkte, dass sie sich nicht benahm.

Es stellt sich heraus, dass Rasiererseiten automatisch basierend auf Ordnern Namespaced werden und eine Teilmenge davon auf der Seite _ViewImports.cshtml enthalten ist . Diese Datei referenzierte immer noch den Kleinbuchstaben-Namespace und Seiten, die nach einem Kleinbuchstaben-Projektstamm suchten, konnten die richtigen gemeinsamen Komponenten nicht mehr finden.

Es ist also nicht überraschend, dass es sich um ein völlig selbstverschuldetes Problem handelt, und ja, ich fühle mich sehr albern, weil ich es nicht von Anfang an richtig durchdacht habe.


Beliebte Antwort

Sie stoßen wahrscheinlich auf einen Fehler mit der .csproj-Datei. Es sollte so aussehen:

<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>

In Ihrem Fall ist höchstwahrscheinlich zusätzliches Material drin, das die Kompilierung der Komponente verhindert. Dies geschieht normalerweise beim Hinzufügen oder Kopieren von Dateien. Siehe: https://github.com/aspnet/Blazor/issues/1206




Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum