如何在 Blazor 中使用 Azure App Config 中的功能标签?
How do I use Feature Tags from Azure App Config in Blazor?
我正在尝试在我的 Blazor 应用程序中使用 Azure App Config 中的功能标志。我一直在关注 Microsoft 的这个 documentation 以添加它们。通过将 FeatureManager 注入我的代码部分并像这样在 .cshtml 文件中使用功能标记,我成功地使用了它们,
<feature name="Beta">
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Beta" asp-action="Index">Beta</a>
</li>
</feature>
但是,我无法在我的 .razor 文件中成功使用功能标记。这是因为无法将此指令添加到我的文件中。
@addTagHelper *, Microsoft.FeatureManagement.AspNetCore
有没有办法在我的 Razor 文件中使用功能标记?
AFAIK Blazor 还没有类似的 component/tag-helper。但不用担心 - 手动检查标志非常容易。
@using Microsoft.FeatureManagement
@inject IFeatureManager FeatureManager
@if (betaFeatureIsEnabled)
{
<h1>My Beta Feature</h1>
}
@code {
private bool betaFeatureIsEnabled = false;
protected override async Task OnInitializedAsync()
{
betaFeatureIsEnabled = await FeatureManager.IsEnabledAsync("Beta");
}
}
从这里我们可以推出我们自己的小助手组件,使它看起来很整洁。
FeatureFlagView.razor(辅助组件)
@using Microsoft.FeatureManagement
@inject IFeatureManager FeatureManager
@if (featureIsEnabled)
{
@ChildContent
}
@code {
private bool featureIsEnabled = false;
[Parameter] public RenderFragment ChildContent { get; set; }
[Parameter] public string FlagName { get; set; }
protected override async Task OnInitializedAsync()
{
if (string.IsNullOrEmpty(FlagName)) return;
featureIsEnabled = await FeatureManager.IsEnabledAsync(FlagName);
}
}
在 .razor 中使用 FeatureFlagView page/component
<FeatureFlagView FlagName="Beta">
<h1>My Beta Feature</h1>
</FeatureFlagView>
这可以扩展很多以处理更复杂的场景,例如需要多个标志,而不是标志等,更重要的是使用枚举(而不是字符串)。
我正在尝试在我的 Blazor 应用程序中使用 Azure App Config 中的功能标志。我一直在关注 Microsoft 的这个 documentation 以添加它们。通过将 FeatureManager 注入我的代码部分并像这样在 .cshtml 文件中使用功能标记,我成功地使用了它们,
<feature name="Beta">
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Beta" asp-action="Index">Beta</a>
</li>
</feature>
但是,我无法在我的 .razor 文件中成功使用功能标记。这是因为无法将此指令添加到我的文件中。
@addTagHelper *, Microsoft.FeatureManagement.AspNetCore
有没有办法在我的 Razor 文件中使用功能标记?
AFAIK Blazor 还没有类似的 component/tag-helper。但不用担心 - 手动检查标志非常容易。
@using Microsoft.FeatureManagement
@inject IFeatureManager FeatureManager
@if (betaFeatureIsEnabled)
{
<h1>My Beta Feature</h1>
}
@code {
private bool betaFeatureIsEnabled = false;
protected override async Task OnInitializedAsync()
{
betaFeatureIsEnabled = await FeatureManager.IsEnabledAsync("Beta");
}
}
从这里我们可以推出我们自己的小助手组件,使它看起来很整洁。
FeatureFlagView.razor(辅助组件)
@using Microsoft.FeatureManagement
@inject IFeatureManager FeatureManager
@if (featureIsEnabled)
{
@ChildContent
}
@code {
private bool featureIsEnabled = false;
[Parameter] public RenderFragment ChildContent { get; set; }
[Parameter] public string FlagName { get; set; }
protected override async Task OnInitializedAsync()
{
if (string.IsNullOrEmpty(FlagName)) return;
featureIsEnabled = await FeatureManager.IsEnabledAsync(FlagName);
}
}
在 .razor 中使用 FeatureFlagView page/component
<FeatureFlagView FlagName="Beta">
<h1>My Beta Feature</h1>
</FeatureFlagView>
这可以扩展很多以处理更复杂的场景,例如需要多个标志,而不是标志等,更重要的是使用枚举(而不是字符串)。