使用Components文件夹而不是Pages



由于Blazor是基于组件的,组件可以在多个页面上,我想使用components文件夹(类似于Features(而不是pages。例如,除了页面组件有一个Dashboard文件夹外,SPA中的每个组件都有单独的文件夹,如Chart、Gauge、List等。这将消除Features中共享文件夹的需要。所有组件都可以在一个地方访问,并由其他页面组件使用。

从.NET 5.0的Blazor Server模板开始,将Pages文件夹更改为Components,并将@namespace更改为Blazor.Server.Components,我得到以下错误。

InvalidOperationException:找不到路由值指定的回退终结点:{page:/_Host,area:}。

应该如何指定Startup.cs中的以下端点来更改对Components文件夹的引用?还有什么要做的吗?

端点。MapFallbackToPage("/\uHost"(;

谢谢!

在blazor服务器端,您需要告诉blazor您的根页面文件夹在哪里:

private static void AddRootDirectory(IServiceCollection services)
{
services.AddRazorPages(options =>
{
options.RootDirectory = "/Views/Pages";
});
}

您可以使用任何您喜欢的文件夹结构,只需记住.razor文件从文件夹结构推断出名称空间。例如,如果您创建了结构/views/components,您应该将此路径添加到导入中,或者在任何需要查找它的页面上都有一个using语句。您会注意到,默认情况下,_imports.razor中提到了Shared文件夹

可以在.razor页面上使用@namespace指令覆盖推断的命名空间。

Web程序集将仅因为@page属性而在当前程序集中查找页面。服务器端您需要告诉服务器根页面在哪里,如上所示。

您已经可以在任意配置的文件夹中创建组件了。您唯一需要保留的是一些默认的东西,如_Host。

所以请继续:(1( 制作一个名为"的文件夹;"组件";(2( 在文件夹中制作一些剃须刀组件(3( 在页面中使用它们。

最新更新