2

我正在尝试在我的 Blazor 应用程序中使用 Azure App Config 中的功能标志。我一直在关注微软的这个文档来添加它们。通过将 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 文件中使用功能标签?

4

1 回答 1

3

AFAIK Blazor 还没有类似的组件/标签助手。但不用担心 - 手动检查标志非常容易。

@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

<FeatureFlagView FlagName="Beta">
    <h1>My Beta Feature</h1>
</FeatureFlagView>

然后可以对其进行相当多的扩展以处理更复杂的场景,例如需要多个标志,而不是标志等,更重要的是使用枚举(而不是字符串)。

于 2020-12-05T12:25:15.963 回答