Blazor 앱을 쓰고 있는데 분명히 거기에 렌더링 된 일부 구성 요소를 가져 오려고합니다. 나는 기본 레이아웃에 기본 탐색 요소를 추가하려고 시도했지만 렌더링이 아닙니다. DOM에서 요소를 볼 수 있지만 그 요소는 비어 있습니다.
MainLayout.cshtml에 포함시키려는 내 NavMenu 구성 요소에서 시작하는 상당히 간단한 내용으로갔습니다.
<h1>WHYYYY????</h1>
또한 MainLayout.cshtml 페이지에서 아주 간단한 레이아웃을 만들었습니다.
@inherits BlazorLayoutComponent
<NavMenu />
<div class="body-content">
@Body
</div>
내 프로젝트의 파일 구조가 복잡하지 않은 것처럼 보입니다.
그래서 내가 간과 한 것에 관해서는 여기에 손실이 있습니다. Blazor 는 페이지에 렌더링해야 할 것이 있다는 것을 알고 있습니다. 그래서 DOM에서 NavMenu 요소를 볼 수 있습니다. 그러나 그 요소 안에는 어떤 내용도 렌더링되지 않습니다. 누락 된 것이 무엇입니까?
나는 블레이저 (Blazor)의 최신 버전을 쓰고있다 : 0.5.1.
근본 원인이 네임 스페이스 및 대소 문자와 관련되어 있음이 드러났습니다.
원래 프로젝트를 설정할 때 VS 코드의 명령 줄을 사용하여 프로젝트를 만들었습니다. 습관에서 나는 모든 것을 소문자로 썼다. (예 : 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