Blazor 未在子文件夹中发现新页面

Kre*_*ess 2 c# asp.net blazor

我创建一个新页面,例如在 Pages/Clients/ 子文件夹中使用以下代码:

@page "/clients"
@inject NavigationManager NavigationManager
<div>My clients page</div>
Run Code Online (Sandbox Code Playgroud)

我放了链接:

<NavLink href="/clients" class="nav-link">Clients</NavLink>
Run Code Online (Sandbox Code Playgroud)

当我点击链接时,页面会显示我的默认消息

抱歉,此地址没有任何内容。

然后我停止应用程序。将我的客户页面放在“页面”文件夹中。运行应用程序,我看到正确的页面

我的客户页面

好的,然后我再次将我的页面文件移动到 Pages/Clients/ 子文件夹,运行应用程序......它仍然有效!此外 - 如果我对 Clients.razor 页面进行任何更改,它会在浏览器中正确显示。

因此,看起来 Blazor 第一次无法在子文件夹中找到该页面,但是在它“注册”之后,它可以以某种方式始终正确地找到并显示它。

我有

<base href="~/" />
Run Code Online (Sandbox Code Playgroud)

我的 _Host.cshtml 文件中的一行

Kre*_*ess 5

好吧,我与它斗争了几天,在 Stackoverflow 上发帖后,我意外地找到了答案。在您的 .csproj 文件中有以下几行:

  <ItemGroup>
    <Watch Include="**\*.razor" />
  </ItemGroup>

  <ItemGroup>
    <Content Remove="Pages\Activities\ActivitiesList.razor" />
    <Content Remove="Pages\Entrance\Entrance.razor" />
    <Content Remove="Pages\Instructors\InstructorsList.razor" />
    <Content Remove="Pages\Plan\Plan.razor" />
  </ItemGroup>

  <ItemGroup>
    <None Include="Pages\Activities\ActivitiesList.razor" />
    <None Include="Pages\Administration\Administration.razor" />
    <None Include="Pages\Entrance\Entrance.razor" />
    <None Include="Pages\Instructors\InstructorsList.razor" />
    <None Include="Pages\Plan\Plan.razor" />
  </ItemGroup>

  <ItemGroup>
    <Watch Remove="Pages\Activities\ActivitiesList.razor" />
    <Watch Remove="Pages\Administration\Administration.razor" />
    <Watch Remove="Pages\Entrance\Entrance.razor" />
    <Watch Remove="Pages\Instructors\InstructorsList.razor" />
    <Watch Remove="Pages\Plan\Plan.razor" />
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

我删除了其中的大部分,只留下了这个:

  <ItemGroup>
    <Watch Include="**\*.razor" />
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

现在可以正确发现所有文件。如果在开发过程中没有在那里生成一些垃圾,请记住检查您的 csproj。

  • 这仍然是 .NET 6 / Visual Studio 2022 中的一个问题。令人难以置信。这可能花费了我的团队多天的综合时间。非常感谢您的回答。有没有什么地方可以让我认为这是一个严重的问题? (3认同)