【问题标题】:How to use subfolders in the Pages and Shared folders如何使用页面和共享文件夹中的子文件夹
【发布时间】:2019-11-28 10:14:32
【问题描述】:

我有一个 Blazor 服务器端应用程序。它具有开箱即用的 Pages 和 Shared 文件夹。由于我在这些文件夹中有很多组件,因此我想将这些组件分配到多个子文件夹中以获得更清晰的结构。但如果我这样做,则找不到组件并且不会显示在 GUI 中。 我错过了什么?我必须在某处注册到新子文件夹的路由吗?

【问题讨论】:

    标签: .net-core blazor


    【解决方案1】:

    您可以拥有任何您想要的文件夹结构。但是您需要使用新的命名空间更新您的_Imports.razor

    例如,如果你有一个结构

    MyProject/Components/Forms/MyInput.razor
    

    您的_Imports.razor 中需要以下内容:

    @using MyProject.Components.Forms;
    

    另一种选择是使用完全限定的命名空间来引用组件:

    <MyProject.Components.Forms.MyInput/>
    

    【讨论】:

    • 谢谢,这就是我想要的!顺便说一句,我喜欢你的博客,它已经帮了我很多次了。
    • 不客气,很高兴听到您发现该博客很有用。
    • 也只需将the blog of Chris 加入书签即可。感谢您在此提及,@PascalR。
    • 这在 2020 年仍然有效吗? Visual Studio 告诉我 .Forms 命名空间不存在。它仍在编译和工作正常,但我无法在我的代码中使用数十条误报错误消息进行开发。
    • 哦,伙计,将它(Visual Studio)关闭再打开确实是软件工程的胶带......
    【解决方案2】:

    我正在为我的代码使用部分类,而不是在 razor 页面中嵌入代码,所以我对上面 Chris 的建议有点困惑,并且在将部分类中的覆盖移到新的部分后,我的覆盖不断出现编译错误子目录。

    这是我如何让它工作的:

    我有一个名为 EmployeeList.razor 的页面和一个名为 EmployeeList.razor.cs 的分部类,它们位于 Pages 文件夹中名为 Web.Client 的项目中。这意味着以下内容:

    • EmployeeList.razor页面的命名空间默认是Web.Client.Pages
    • 我的部分类使用相同的命名空间

    如果我将 EmployeeList.razorEmployeeList.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 页面,但我会记住这一点,以防无法正确编译。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多