Почему компоненты в этом приложении Blazor не отображаются?

asp.net-core blazor

Вопрос

Я пишу приложение Blazor и, очевидно, хочу получить некоторые компоненты, представленные там. Я только что попробовал добавить основной элемент навигации в свой основной макет, но это не рендеринг. Я вижу элемент на DOM, но этот элемент пуст.

Я пошел с довольно простым контентом, чтобы начать с моего компонента NavMenu, который я пытаюсь включить в MainLayout.cshtml:

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

Я также сделал довольно простой макет на моей странице MainLayout.cshtml:

@inherits BlazorLayoutComponent


<NavMenu />

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

Структура файла в моем проекте кажется несложной:

введите описание изображения здесь

Поэтому я не понимаю, что я забыл. Похоже, что Blazor знает , что он должен показывать на странице - вот почему я вижу элемент NavMenu в DOM. Но в этом элементе никогда не будет содержаться контент. Чего не хватает?

Компонент NavMenu Blazor

Я использую последнюю (на момент написания) версию Blazor: 0.5.1.

Принятый ответ

Оказывается, основная причина была связана с пространствами имен и оболочками.

Когда я первоначально настроил проект, я создал его с помощью командной строки в VS Code. По привычке, я написал все в нижнем регистре (например, dotnet new blazor -o 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



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему