Perché i componenti di questa app Blazor non riescono a renderizzare?

asp.net-core blazor

Domanda

Sto scrivendo un'app Blazor e ovviamente voglio ottenere alcuni componenti resi lì. Ho appena provato ad aggiungere un elemento di navigazione di base al mio layout principale ma non è il rendering. Posso vedere l'elemento sul DOM, ma quell'elemento è vuoto.

Sono andato con alcuni contenuti abbastanza semplici per iniziare con il mio componente NavMenu che sto cercando di includere su MainLayout.cshtml:

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

Ho anche preso un layout piuttosto semplice sulla mia pagina MainLayout.cshtml:

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

La struttura dei file nel mio progetto sembra semplice:

inserisci la descrizione dell'immagine qui

Quindi sono in perdita qui per quello che ho trascurato. Sembra che Blazor sappia che c'è qualcosa da mostrare alla pagina - ecco perché posso vedere l'elemento NavMenu nel DOM. Ma non c'è mai alcun contenuto reso all'interno di quell'elemento. Cosa manca?

Componente NavMenu Blazor

Sto eseguendo la versione più recente (al momento della scrittura) di Blazor: 0.5.1.

Risposta accettata

Si scopre che la causa principale era legata agli spazi dei nomi e all'involucro.

Quando ho originariamente impostato il progetto, l'ho creato utilizzando la riga di comando in VS Code. Per abitudine, ho scritto tutto in minuscolo (ad es. dotnet new blazor -o myapp ).

Come preferenza personale, mi piace che i miei spazi dei nomi siano coperti da un titolo, quindi qualche tempo dopo ho deciso di "riordinare" e cambiare myapp in Myapp . Ho passato il codice al refactoring del nuovo nome in titlecase e tutto è stato compilato, quindi ho continuato a lavorare ... fino a poche settimane dopo quando sono tornato a lavorare su un componente e ho notato che non si comportava.

Si scopre che le pagine del rasoio sono automaticamente assegnate ai nomi in base alle cartelle e un sottoinsieme di quelle sono incluse nella pagina _ViewImports.cshtml . Quel file faceva ancora riferimento allo spazio dei nomi in minuscolo e le pagine in cerca di una radice di progetto in minuscolo non erano più in grado di trovare i componenti condivisi giusti.

Quindi, non sorprende, è un problema interamente autoinflitto e sì mi sento molto sciocco per non averlo pensato correttamente fin dall'inizio.


Risposta popolare

Probabilmente stai incontrando un bug con il file .csproj. Dovrebbe sembrare come questo:

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

Il tuo è probabilmente materiale extra in esso, che impedisce la compilazione del componente. Questo di solito accade quando si aggiungono file o si copiano. Vedi: https://github.com/aspnet/Blazor/issues/1206




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché