Blazor:在 Razor 文件中定义命名空间

Blazor: Define namespace in Razor File

问题:有没有办法在 Blazor 的 .razor 文件中定义命名空间。

问题解释:Blazor 中的 Razor 文件没有定义命名空间(只有 class 后面的代码有一个,它应该与项目中的 .razor 文件位置匹配)。这导致了 GitHub 上的问题,它限制了我提供具有少量命名空间的 Razor 组件库。

Github 问题:这源于我不认同的微软理念:文件名不区分大小写。我有一个文件夹,假设它被命名为 'FooBar'。在我的项目中,我将其重命名为 'Foobar'。 Windows 没有正确重命名,或者在 Github 中签入时未将其视为更改。结果,我的命名空间 'Foobar' 后面的代码不再匹配我的 /razor 文件 'FooBar' 的命名空间,导致 Github 上的构建错误(它在我的电脑上运行良好)。如果我能够在 .razor 文件中指定命名空间,就不会发生这种情况。

组件库问题:我正在制作一个我想在 NuGet 上提供的组件库。我想将所有组件保存在单独的文件夹中(假设是为了单一职责)。当我现在想要包含这个组件库时,_imports 文件将为库中的每个文件夹都有一个 @include,同样是因为我无法将文件夹与组件所在的命名空间分开。我想说 @include Foobar 而不是 @include Foobar.Checkbox@include Foobar.Radiobutton

那么有什么解决办法吗?

好的,我没有找到这个谷歌搜索(虽然它可能在某个地方)但我尝试了以下方法:

在后面的代码中,将命名空间 Foobar.Checkbox 重命名为 Foobar 在剃须刀文件中添加 @namespace Foobar

是的,就是这么简单facepalm

举个例子。您的 Blazor 组件名称是 Box,在文件夹 Boxes 中。

你的命名空间应该是 Boxs - 对吧?

这样做: 在名称为 Box.razor.cs 的 Boxs 文件夹中添加一个 class。这个class就是Box的C#代码,然后加上这个class:

using Microsoft.AspNetCore.Components;

namespace Boxes;

public partial class Box: ComponentBase
{
// @code ...
}

为简单起见,将 Boxs 命名空间添加到 _imports.razor。