Blazor中点击搜索按钮时如何获取已填写的搜索字段名称
Blazor 搜索表单已填字段展示实现
别去遍历页面控件,Blazor是数据驱动框架,直接基于你已经做了双向绑定的Data模型处理就行,逻辑简单性能还好。
具体实现步骤
- 先在组件代码块里定义用来存展示结果的变量
@code { // 你原本的搜索绑定模型,保留原有逻辑不用改 private SearchFormModel Data { get; set; } = new(); // 存已填写的字段展示名 private List<string> FilledFields { get; set; } = new(); }
- 给搜索按钮绑定点击事件,在事件里判断模型里哪些字段有值,把对应名称存到列表里
@* 你的搜索按钮 *@ <button class="btn btn-primary" @onclick="RunSearch">搜索</button> @code { private void RunSearch() { FilledFields.Clear(); // 逐个判断绑定字段是否有内容,有就把要展示的名称加进列表 if (!string.IsNullOrWhiteSpace(Data.Name)) FilledFields.Add("Name"); if (!string.IsNullOrWhiteSpace(Data.Address)) FilledFields.Add("Address"); if (!string.IsNullOrWhiteSpace(Data.PhoneNumber)) FilledFields.Add("Phone Number"); // 其他字段按相同逻辑加就行,如果要展示input的id值(比如txtOne),Add里传对应id字符串即可 } }
- 在页面底部加展示区域,有已填字段的时候才显示
@if (FilledFields.Any()) { <blockquote> You selected: @string.Join(", ", FilledFields) </blockquote> }
可选优化
如果你的搜索字段特别多,不想逐个写判断,可以给模型属性加[DisplayName("字段显示名")]特性,写个通用的反射方法自动扫描所有有值的属性、取对应的显示名,后续加新搜索字段的时候不用改搜索事件里的判断逻辑。如果字段数量不多,直接逐个写判断是最适合新手的方式,逻辑直白不容易出问题。
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

