이 Blazor 앱의 구성 요소가 왜 렌더링되지 않습니까?

asp.net-core blazor

문제

Blazor 앱을 쓰고 있는데 분명히 거기에 렌더링 된 일부 구성 요소를 가져 오려고합니다. 나는 기본 레이아웃에 기본 탐색 요소를 추가하려고 시도했지만 렌더링이 아닙니다. DOM에서 요소를 볼 수 있지만 그 요소는 비어 있습니다.

MainLayout.cshtml에 포함시키려는 내 NavMenu 구성 요소에서 시작하는 상당히 간단한 내용으로갔습니다.

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

또한 MainLayout.cshtml 페이지에서 아주 간단한 레이아웃을 만들었습니다.

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

내 프로젝트의 파일 구조가 복잡하지 않은 것처럼 보입니다.

여기에 이미지 설명을 입력하십시오.

그래서 내가 간과 한 것에 관해서는 여기에 손실이 있습니다. Blazor 페이지에 렌더링해야 할 것이 있다는 것을 알고 있습니다. 그래서 DOM에서 NavMenu 요소를 볼 수 있습니다. 그러나 그 요소 안에는 어떤 내용도 렌더링되지 않습니다. 누락 된 것이 무엇입니까?

NavMenu 블레이저 구성 요소

나는 블레이저 (Blazor)의 최신 버전을 쓰고있다 : 0.5.1.

수락 된 답변

근본 원인이 네임 스페이스 및 대소 문자와 관련되어 있음이 드러났습니다.

원래 프로젝트를 설정할 때 VS 코드의 명령 줄을 사용하여 프로젝트를 만들었습니다. 습관에서 나는 모든 것을 소문자로 썼다. (예 : dotnet new blazor -o myapp ).

개인적인 취향에 따라, 나는 네임 스페이스가 제목으로 Myapp . 그래서 얼마 후, 나는 "깔끔하게 정리하고" myappmyapp 를 변경하기로 결정했다. 리팩터링을 통해 새로운 타이틀 케이스 이름과 컴파일 된 모든 내용을 검토 한 결과, 몇 주 후 컴퍼넌트에 대한 작업을 다시 한 후 작동하지 않는 것으로 나타났습니다.

면도 페이지는 폴더를 기반으로 자동으로 네패스 되고 그 하위 세트는 _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
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.