如何基于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
相关产品推荐
相关产品推荐

