Pourquoi les composants de cette application Blazor ne pourraient-ils pas être rendus?

asp.net-core blazor

Question

J'écris une application Blazor et, évidemment, je veux obtenir certains composants rendus ici. Je viens d'essayer d'ajouter un élément de navigation de base à ma mise en page principale, mais ce n'est pas le rendu. Je peux voir l'élément sur le DOM, mais cet élément est vide.

J'ai commencé avec un contenu assez simple dans mon composant NavMenu que j'essaie d'inclure dans MainLayout.cshtml:

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

J'ai également pris une mise en page assez simple sur ma page MainLayout.cshtml:

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

La structure de fichier dans mon projet semble simple:

entrez la description de l'image ici

Je ne comprends donc pas ce que j'ai oublié. Il semblerait que Blazor sache qu'il doit rendre quelque chose à la page - c'est pourquoi je peux voir l'élément NavMenu dans le DOM. Mais il n'y a jamais aucun contenu rendu à l'intérieur de cet élément. Qu'est-ce qui manque?

Composant NavMenu Blazor

J'utilise la dernière version (au moment de la rédaction) de Blazor: 0.5.1.

Réponse acceptée

Il s'avère que la cause fondamentale était liée aux espaces de noms et aux majuscules.

Lorsque j'ai initialement configuré le projet, je l'ai créé à l'aide de la ligne de commande dans VS Code. Par habitude, j'ai tout écrit en minuscule (c'est-à- dotnet new blazor -o myapp ).

Personnellement, j'aime bien que mes espaces de noms soient protégés par un titre. Quelques temps plus tard, j'ai donc décidé de "ranger" et de remplacer myapp par Myapp . J'ai parcouru le code pour refactoriser le nouveau nom de titlecase et tout ce qui a été compilé, alors j'ai continué à travailler ... jusqu'à ce que quelques semaines plus tard, lorsque je suis revenu travailler sur un composant, j'ai remarqué qu'il ne se comportait pas.

Il s'avère que les pages de rasoir sont automatiquement espacées de noms en fonction de dossiers et qu'un sous-ensemble de ceux-ci est inclus dans la page _ViewImports.cshtml . Ce fichier faisait toujours référence à l'espace de noms en minuscule et les pages à la recherche d'une racine de projet en minuscule n'étaient plus en mesure de trouver les bons composants partagés.

Donc, sans surprise, c'est un problème entièrement auto-infligé et oui, je me sens très bête de ne pas y avoir réfléchi correctement dès le début.


Réponse populaire

Vous rencontrez probablement un bogue avec le fichier .csproj. Ça devrait ressembler à ça:

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

Le vôtre contient probablement des éléments supplémentaires empêchant la compilation du composant. Cela se produit généralement lors de l'ajout ou de la copie de fichiers. Voir: https://github.com/aspnet/Blazor/issues/1206




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi