【发布时间】:2019-11-28 10:14:32
【问题描述】:
我有一个 Blazor 服务器端应用程序。它具有开箱即用的 Pages 和 Shared 文件夹。由于我在这些文件夹中有很多组件,因此我想将这些组件分配到多个子文件夹中以获得更清晰的结构。但如果我这样做,则找不到组件并且不会显示在 GUI 中。 我错过了什么?我必须在某处注册到新子文件夹的路由吗?
【问题讨论】:
我有一个 Blazor 服务器端应用程序。它具有开箱即用的 Pages 和 Shared 文件夹。由于我在这些文件夹中有很多组件,因此我想将这些组件分配到多个子文件夹中以获得更清晰的结构。但如果我这样做,则找不到组件并且不会显示在 GUI 中。 我错过了什么?我必须在某处注册到新子文件夹的路由吗?
【问题讨论】:
您可以拥有任何您想要的文件夹结构。但是您需要使用新的命名空间更新您的_Imports.razor。
例如,如果你有一个结构
MyProject/Components/Forms/MyInput.razor
您的_Imports.razor 中需要以下内容:
@using MyProject.Components.Forms;
另一种选择是使用完全限定的命名空间来引用组件:
<MyProject.Components.Forms.MyInput/>
【讨论】:
我正在为我的代码使用部分类,而不是在 razor 页面中嵌入代码,所以我对上面 Chris 的建议有点困惑,并且在将部分类中的覆盖移到新的部分后,我的覆盖不断出现编译错误子目录。
这是我如何让它工作的:
我有一个名为 EmployeeList.razor 的页面和一个名为 EmployeeList.razor.cs 的分部类,它们位于 Pages 文件夹中名为 Web.Client 的项目中。这意味着以下内容:
如果我将 EmployeeList.razor 和 EmployeeList.razor.cs 文件移动到名为 EmployeePages 的页面 下 的子文件夹中,EmployeeList.razor 页面现在将具有 Web.Client.Pages.EmployeePages 的新命名空间。这意味着我还需要更改我的部分类的命名空间以匹配,否则它将无法覆盖方法。
我遇到的唯一其他问题是没有注意我使用的文件夹名称。我最初使用了一个名为 Employee 的子文件夹(如在 Pages\Employee\EmployeeList.razor 中),这为 Web.Client.Pages.Employee 的 razor 页面创建了一个命名空间,我开始遇到一个 Employee.cs 类的问题。在我的部分类中使用,因为它认为我正在尝试使用命名空间而不是类名。由于页面的路径是由 razor 页面上的@Page 指令决定的,因此文件夹名称实际上只决定了 razor 页面的命名空间,所以我将子文件夹名称更改为 EmployeePages。
我没有发现我需要使用新的命名空间更新 _Imports.razor 页面,但我会记住这一点,以防无法正确编译。
【讨论】: