Blazor 逐键搜索并动态反馈到url

news/2024/10/6 3:59:16/文章来源:https://www.cnblogs.com/densen2014/p/18286508

Blazor 逐键搜索并动态反馈到url

源码

前言: 今天打开了 spotify 网页版找歌, 突然发现这个功能很抓眼球,于是试试blazor能不能模仿一下.

1. 节省时间,直接用模板开搞

新建项目,使用bb模板, 命名为 b22dynamicURL



2. 运行一次,看看效果

显示如下模板站点,就说明你前面的操作都对了.

3. 修改默认标签页为单页

`private bool UseTabSet { get; set; } = true; `

改为

`private bool UseTabSet { get; set; } = false;`

4. 替换首页代码

@page "/"
@attribute [TabItemOption(Text = "Index", Closable = false)]
@page "/music/{Value?}"
@using System.Diagnostics.CodeAnalysis<PageTitle>Index</PageTitle><div>@Value
</div><BootstrapInput @bind-Value="Value" ShowLabel="true" UseInputEvent="true" OnValueChanged="_=>UpdateSearching()" IsAutoFocus />@code{[NotNull][Inject]public NavigationManager? NavigationManager { get; set; }[DisplayName("搜索")][Parameter]public string? Value { get; set; } = "12345";Task UpdateSearching(){NavigationManager.NavigateTo($"music/{Value}");return Task.CompletedTask;}
}

其中 <BootstrapInput @bind-Value="Value" ShowLabel="true" UseInputEvent="true" OnValueChanged="_=>UpdateSearching()" IsAutoFocus /> 为 BootstrapBlazor 库的输入组件, 我们启用显示标签, 使用逐键输入, 自动获取焦点属性.

5. 运行看效果

可以看到,基本上满足需求.

6. 拼音,拼音缩写

万能的群友又来提问了 "如果中文能直接转英文,就好了" , 虽然不太明白说什么,但是可以安排一下

首先拉一个老掉牙的拼音包 Microsoft.International.Converters.PinYinConverter

然后代码改一下

@page "/"
@attribute [TabItemOption(Text = "Index", Closable = false)]
@page "/music/{Value?}"
@using System.Diagnostics.CodeAnalysis
@using Microsoft.International.Converters.PinYinConverter<PageTitle>Index</PageTitle><div>@Value拼音<i>@pinyin</i>拼音缩写<b>@pinyinCompat</b>
</div>
<BootstrapInput @bind-Value="Value" ShowLabel="true" UseInputEvent="true" OnValueChanged="_=>UpdateSearching()" IsAutoFocus />@code{[NotNull][Inject]public NavigationManager? NavigationManager { get; set; }[DisplayName("搜索")][Parameter]public string? Value { get; set; } = "12345";string? pinyin { get; set; } = "";string? pinyinCompat { get; set; } = "";Task UpdateSearching(){if (!string.IsNullOrWhiteSpace(Value)){pinyin = string.Empty;pinyinCompat = string.Empty;foreach (char c in Value){if (ChineseChar.IsValidChar(c)){ChineseChar chineseChar = new ChineseChar(c);pinyin += chineseChar.Pinyins[0];pinyinCompat += chineseChar.Pinyins[0][0];}else{pinyin += c;pinyinCompat += c;}}}NavigationManager.NavigateTo($"music/{Value}");return Task.CompletedTask;}
}

7. 运行看效果

不知道你们满不满意, 我已经满意了, :->

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/738944.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

集团数字化建设总体规划

1、数字生态体系建设规划 体系规划整体思路 从战略出发,描绘企业愿景蓝图,结合领先实践,设计方案与实施路线 通过体系规划和建设,助力业务发展,支撑战略落地 数字化助力上下贯通的高效管理与横向协同的业务经营 建设后援集中平台,实现高效高质集中作业、交叉销售,产生规…

氛围共处(Ambient Co-presence)丨RTE 共读计划

在同一个网络空间和情境下,营造一种微妙的、隐约感知的、实时同步的感觉。 加入「RTE 共读计划」: 重要的技术,往往是那些不易察觉却无所不在的技术。欢迎阅读「RTE 共读计划」的文章,我们希望通过本计划:• 挖掘到那些帮助人们跨越距离实时互动(Real-Time Engagement,R…

【已解决】pip已经安装好了模块,运行代码还是报错说没安装

在 Python 开发中,有时用 pip 安装了模块,运行代码时却提示没安装,这让人很困惑。下面来看看可能的原因和解决办法可能原因:1. 虚拟环境出错:如果用了虚拟环境,可能装错了地方,运行代码时用的环境没装这个模块。2. Python 版本不同:安装模块和运行代码的 Python 版本不…

# Day01

愿你自由如夏天的风,去实现所有开出花来的梦 Ctrl+C复制 Ctri+V粘贴 Crtl+A全选 Crtl+X剪切 Crtl+Z撤销 Crtl+S保存 …

关于平衡树(施工中)

关于Splay$\LARGE {一些无聊的定义}$ 二叉搜索树(BST树) 定义 二叉搜索树是一种二叉树的树形数据结构,其定义如下:空树是二叉搜索树。若二叉搜索树的左子树不为空,则其左子树上所有点的附加权值均小于其根节点的值。若二叉搜索树的右子树不为空,则其右子树上所有点的附加权…

Linux 提权-SUID/SGID_1

本文通过 Google 翻译 SUID | SGID Part-1 – Linux Privilege Escalation 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释补充。导航0 前言 1 了解特殊权限 2 寻找 SUID/SGID 二进制文件 – 手动方法2.1 枚举 SUID 二进制文件 2.2 枚举 SGID 二…

Java解析并修改JSON:将isShow属性改为false

哈喽,大家好,我是木头左!在Java中,可以使用各种库来处理JSON数据。其中,Jackson和Gson是两个非常流行且功能强大的库。在这篇文章中,将使用Jackson库来解析给定的JSON字符串,将其转换为Map对象,然后修改其中的"isShow"属性,最后再将其转回JSON字符串。 准备…

#cmd的常用命令(Dos)

cmd的常用命令首先win+r输入cmd并回车进入cmd命令中cd 命令:进入指定目录cd d:进入d盘目录.会发现进入不了d盘,因为cd只能在当前目录下操作不能跨区操作. 键入d:回车进入d盘.我d盘下有aaa文件夹cd aaa进入文件夹aaa目录下提示 ".."为上一级目录."."为当前…

StarRocks数据导入慢问题解决

一、问题描述依据StarRocks官网快速开始安装教程,用docker compose安装了starrocks,log模块从rabbitMq的队列批量获取log消息,发现队列消息有堆积,一晚上下来大概能对接4000条消息。经单元测试发现insert into到starrocks中时间竟然相差几百倍。 mysql每条insert sql执行3.…

CAN转PN网关模块连接激光切割机的配置方法

本文介绍了兴达易控CAN转Profinet网关模块(XD-PN_CAN20)用于连接CAN激光切割机的使用方法,激光切割机在工业生产中被广泛应用,而激光发射器与控制设备常以不同的协议存在两者之间,CAN总线和Profinet以各自的特点被广泛用于设备当中。本文将介绍介绍兴达易控CAN转Profinet网…

R语言、SAS潜类别(分类)轨迹模型LCTM分析体重指数 (BMI)数据可视化|附代码数据

全文下载链接: http://tecdat.cn/?p=26105 最近我们被客户要求撰写关于LCTM的研究报告,包括一些图形和统计输出。 在本文中,潜类别轨迹建模 (LCTM) 是流行病学中一种相对较新的方法,用于描述生命过程中的暴露,它将异质人群简化为同质模式或类别。然而,对于给定的数据集…