You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于YML环境变量在Razor中隐藏列表的「Make a payment」元素?

基于YML环境变量隐藏QuickAction中的「Make a payment」选项

1. 配置YML环境变量

先在你的配置文件(比如appsettings.yml或对应环境的配置文件)中添加开关变量:

Features:
  ShowMakePayment: false # 设置为false时隐藏「Make a payment」选项

2. 在C#中读取配置并动态生成列表

不要用固定的只读列表,改为通过配置动态过滤。先注入IConfiguration读取YML配置,再生成符合条件的QuickAction列表:

private readonly IConfiguration _configuration;
private List<QuickAction> _quickActions;

// 构造函数注入配置服务
public YourPageComponent(IConfiguration configuration)
{
    _configuration = configuration;
    InitQuickActions();
}

private void InitQuickActions()
{
    // 读取开关配置,默认显示(配置不存在时的兜底值)
    bool showMakePayment = _configuration.GetValue<bool>("Features:ShowMakePayment", true);

    _quickActions = new List<QuickAction>();

    // 根据开关决定是否添加「Make a payment」
    if (showMakePayment)
    {
        _quickActions.Add(new QuickAction
        {
            Title = "Make a payment",
            Link = "/pay"
        });
    }

    // 添加其他固定选项
    _quickActions.AddRange(new List<QuickAction>
    {
        new QuickAction
        {
            Title = "Split a bill",
            Link = "#"
        },
        new QuickAction
        {
            Title = "View reports",
            Link = "/reports"
        }
    });
}

// 暴露给Razor页面使用的属性
public List<QuickAction> QuickActions => _quickActions;

3. 修改Razor调用代码

将原来绑定的私有字段改为上面的公开属性:

<div class="mat-layout-grid-cell-span-3">
    <QuickActionCard AccountType=@AccountType.ToString()
                    Classes="p-0"
                    Styles="border-radius: 10px !important;"
                    QuickActions="QuickActions"
                    ColumnSpanWidth="12" />
</div>

补充提示

  • 如果是Blazor组件,直接在组件顶部添加@inject IConfiguration Configuration即可读取配置,无需构造函数注入。
  • 确保YML配置文件已被项目正确加载,比如在Program.cs中通过第三方包(如YamlDotNet)或框架自带的配置加载逻辑引入YML文件。

内容的提问来源于stack exchange,提问作者VVN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 13:15:40