首页 > 其他分享 >Blazor 逐键搜索并动态反馈到url

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

时间:2024-07-05 20:19:33浏览次数:16  
标签:NavigationManager set string get url Value pinyinCompat Blazor 逐键

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. 运行看效果

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

标签:NavigationManager,set,string,get,url,Value,pinyinCompat,Blazor,逐键
From: https://www.cnblogs.com/densen2014/p/18286508

相关文章

  • MultipartFile resource [file] cannot be resolved to URL
    java.io.FileNotFoundException:MultipartFileresource[file]cannotberesolvedtoURLatorg.springframework.core.io.AbstractResource.getURL(AbstractResource.java:114)atorg.springframework.core.io.AbstractResource.getURI(AbstractResource.java:1......
  • C#使用Blazor编译WebAssembly供前端调用(一),关于SkiaSharp相关问题
    目前信创热潮开始掀起,而C#很多行业开发的都是桌面端,迁移到网页端常常会因为很多库不支持或者不友好导致项目一直卡着。最近一直在网上找灵感,偶然发现WebAssembly,一开始我还没不知道这是什么,后面发现目前主流浏览器都支持这一技术。我们看一下这个WebAssembly简介如下而后我......
  • Linux 交叉编译(toolchain) ARM aarch64版 libcurl.so 库
    前言全局说明curl是用来访问网络,可以上传下载数据一、说明系统环境:ubunt18.04二、官网下载源码:2.1最新版本https://curl.haxx.se/download.htmlhttps://github.com/curl/curl/releases2.2历史版本https://curl.se/download/2.3变更日志https://curl.se/chan......
  • 从 URL 到页面:浏览器加载过程的详细解析
    当你在浏览器中输入一个URL并按下回车键,直到页面内容显示在屏幕上,这个过程中发生了许多步骤。以下是一个详细的分解,解释从输入URL到看到内容之间的整个过程:1.用户输入URL用户在浏览器地址栏中输入URL(例如 https://www.example.com)并按下回车键。2.浏览器解析URL浏......
  • Yi.Admin+Blazor上手教程系列3-新项目的一些基本设置
    1、修改swg的组名配置ApplicationService//动态ApiConfigure<AbpAspNetCoreMvcOptions>(options=>{options.ConventionalControllers.Create(typeof(YiAbpApplicationModule).Assembly,options=>options.RemoteServiceName="default");......
  • javascript url 传递参数中文乱码问题解决方案
    在JavaScript中,传递URL参数时,如果参数包含中文字符,可能会出现乱码问题。解决这一问题可以使用encodeURIComponent和decodeURIComponent函数。这些函数会对URL参数进行编码和解码,确保特殊字符(包括中文字符)能够被正确传递和解析。以下是一个完整的解决方案示例: 1.......
  • Yi.Admin+Blazor上手教程系列2
    基础设施层,存放各种通用方法、ORM等领域共享层,存放枚举、常量、事件参数、对应用层的dto领域层,存放业务的内部实现(领域服务)、领域事件。对外也就是对应用层可以暴露实体、对应用层的dto应用抽象层,存放应用层抽象、系统对外的dto应用层,存放对业务的组装(领域服务),对外暴露的dto,主......
  • Yi.Admin+Blazor上手教程系列1
    1、clone项目后可以删除的实例文件2、认识各个模块Doman.Shared共享层最底层是Doman.Shared,共享层,这里存放各个常量、枚举、不依赖各个模块的通用类,Doman.Shared,共享层是一层很简单、不包含业务的模块,让它尽可能简单。Domain领域层只依赖Doman.Shared的Domain领域层,你的......
  • ASP.NET Core Blazor 5:Blazor表单和数据
      本章将描述Blazor为处理HTML表单提供的特性,包括对数据验证的支持。1准备工作  继续使用上一章项目。  创建Blazor/Forms文件夹并添加一个名为EmptyLayout.razor的Razor组件。本章使用这个组件作为主要的布局。@inheritsLayoutComponentBase<divclass="......
  • 从指定的CSV文件中读取图片URL,批量下载这些图片到指定的目录
    导入必要的库:包括pandas用于处理CSV文件,requests用于发送网络请求,以及os和time等进行文件系统操作和可能的时间控制。设置路径:指定了CSV文件的位置和图片将要保存的目录。如果保存目录不存在,脚本会自动创建。配置HTTP请求会话:使用requests.Session()建立会话,并通过Retry和......