3

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

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

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

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

那么有什么解决方案吗?

4

2 回答 2

17

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

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

是的,就是这么简单的手掌

于 2020-07-16T06:49:29.203 回答
0

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

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

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

using Microsoft.AspNetCore.Components;

namespace Boxes;

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

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

于 2021-12-16T01:06:43.807 回答