由于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( 在页面中使用它们。