BootstrapBlazor MultiFilter组件搜索功能优化:支持自定义字符串比较方式
在BootstrapBlazor组件库中,MultiFilter组件是一个功能强大的多选过滤器控件,它内置了搜索功能,可以帮助用户快速筛选选项。然而,在9.6.2版本之前,该组件的搜索功能使用的是默认的字符串包含比较方式(StringComparison.Ordinal),这种比较方式区分大小写,在某些场景下可能不够灵活。
原始实现分析
MultiFilter组件的搜索功能核心逻辑位于OnSearchValueChanged方法中。原始实现如下:
private Task OnSearchValueChanged(string? val)
{
_searchText = val;
if (_source != null)
{
if (!string.IsNullOrEmpty(_searchText))
{
_items = _source.Where(i => i.Text.Contains(_searchText)).ToList();
}
else
{
_items = null;
}
StateHasChanged();
}
return Task.CompletedTask;
}
这段代码直接使用了string.Contains方法,没有指定字符串比较方式,因此默认采用区分大小写的Ordinal比较。这在需要不区分大小写搜索的场景下会带来不便。
优化方案实现
为了解决这个问题,BootstrapBlazor在9.6.2-beta02版本中为MultiFilter组件新增了一个StringComparison参数,允许开发者自定义字符串比较方式。主要改动包括:
- 新增StringComparison参数,默认值为StringComparison.OrdinalIgnoreCase(不区分大小写)
[Parameter]
public StringComparison StringComparison { get; set; } = StringComparison.OrdinalIgnoreCase;
- 修改OnSearchValueChanged方法,使用指定的StringComparison进行比较
private Task OnSearchValueChanged(string? val)
{
_searchText = val;
if (_source != null)
{
if (!string.IsNullOrEmpty(_searchText))
{
_items = [.. _source.Where(i => i.Text.Contains(_searchText, StringComparison))];
}
else
{
_items = null;
}
StateHasChanged();
}
return Task.CompletedTask;
}
使用方式
开发者现在可以通过设置StringComparison参数来灵活控制搜索行为:
<MultiFilter ShowSearch="true" StringComparison="@StringComparison.Ordinal" />
或者保持默认的不区分大小写方式:
<MultiFilter ShowSearch="true" />
技术背景
StringComparison枚举提供了多种字符串比较方式:
- CurrentCulture:使用当前区域性的排序规则
- CurrentCultureIgnoreCase:使用当前区域性的排序规则,忽略大小写
- InvariantCulture:使用固定区域性的排序规则
- InvariantCultureIgnoreCase:使用固定区域性的排序规则,忽略大小写
- Ordinal:使用序号排序规则(二进制比较)
- OrdinalIgnoreCase:使用序号排序规则,忽略大小写
在大多数国际化应用中,推荐使用CurrentCulture或CurrentCultureIgnoreCase,以获得与用户区域设置一致的排序行为。而在需要精确匹配或性能敏感的场景下,可以使用Ordinal或OrdinalIgnoreCase。
总结
BootstrapBlazor对MultiFilter组件的这一优化,使得开发者能够更灵活地控制搜索行为,满足不同场景下的需求。通过简单的参数配置,即可实现区分大小写或不区分大小写的搜索功能,大大提升了组件的适用性和用户体验。
这一改进也体现了BootstrapBlazor团队对开发者反馈的积极响应和对组件细节的持续优化,使得这个优秀的Blazor组件库更加完善和实用。
HunyuanImage-3.0
HunyuanImage-3.0 统一多模态理解与生成,基于自回归框架,实现文本生成图像,性能媲美或超越领先闭源模型00ops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。C++046Hunyuan3D-Part
腾讯混元3D-Part00GitCode-文心大模型-智源研究院AI应用开发大赛
GitCode&文心大模型&智源研究院强强联合,发起的AI应用开发大赛;总奖池8W,单人最高可得价值3W奖励。快来参加吧~0290Hunyuan3D-Omni
腾讯混元3D-Omni:3D版ControlNet突破多模态控制,实现高精度3D资产生成00GOT-OCR-2.0-hf
阶跃星辰StepFun推出的GOT-OCR-2.0-hf是一款强大的多语言OCR开源模型,支持从普通文档到复杂场景的文字识别。它能精准处理表格、图表、数学公式、几何图形甚至乐谱等特殊内容,输出结果可通过第三方工具渲染成多种格式。模型支持1024×1024高分辨率输入,具备多页批量处理、动态分块识别和交互式区域选择等创新功能,用户可通过坐标或颜色指定识别区域。基于Apache 2.0协议开源,提供Hugging Face演示和完整代码,适用于学术研究到工业应用的广泛场景,为OCR领域带来突破性解决方案。00- HHowToCook程序员在家做饭方法指南。Programmer's guide about how to cook at home (Chinese only).Dockerfile09
- PpathwayPathway is an open framework for high-throughput and low-latency real-time data processing.Python00
热门内容推荐
最新内容推荐
项目优选








