标签页的样子

设计思路

  1. 与其他输入框一样,存在一个Label标签,由于这里不像其他输入框一样可以直接使用Row标签,所以这里需要额外增加。

  2. 使用Tag组件显示所有的标签,我们在Blazor 组件库 BootstrapBlazor 中Tag组件介绍中写过使用方法。

  3. 使用AutoComplete组件输入新的标签,我们同样在Blazor 组件库 BootstrapBlazor 中AutoComplete组件介绍中介绍过使用方法。

相关代码

razor:

<label class="form-label">标签</label>
<div class="row g-3">
@if (Article.Tags != null)
{
foreach (var tag in Article.Tags)
{
<div class="col-auto">
<Tag Color="Color.Primary" ShowDismiss="true" OnDismiss="() => TagClose(tag)">@tag</Tag>
</div>
}
}
<div class="col-auto">
<AutoComplete onkeydown="enter_down(event);" ShowLabel="false" Items="@AllTags" IsSelectAllTextOnFocus="true" OnEnterAsync="TagPress"/>
</div>
</div>

code:


private Task TagPress(string value)
{
if (value.IsNullOrEmpty() || Article.Tags.Any(x => x == value))
{
return Task.CompletedTask;
} Article.Tags.Add(value);
StateHasChanged();
return Task.CompletedTask;
} private Task TagClose(string tagName)
{
Article.Tags.Remove(tagName);
StateHasChanged();
return Task.CompletedTask;
}

js:

function enter_down(event) {
if(event.keyCode == "13") {
stopDefault(event);
}
} function stopDefault(e) {
//如果提供了事件对象,则这是一个非IE浏览器
if(e && e.preventDefault) {
//阻止默认浏览器动作(W3C)
e.preventDefault();
} else {
//IE中阻止函数器默认动作的方式
window.event.returnValue = false;
}
return false;
}

注意事项

由于浏览器行为中如果在一个Form中有且仅有一个类型为Submit的按钮,当在按下回车时,会自动触发提交行为。

这里我们的AutoComplete组件也是使用回车键来触发添加Tag的逻辑,与浏览器默认行为冲突,所以我们要屏蔽掉回车键的onkeydown事件。

但是blazor并不支持单按键的屏蔽逻辑,所以我们只能在这里借助Js来实现。

blazor的razor文件里不能直接写js块,但是可以在标签里直接调用Js方法或者写简单的js语句,如<AutoComplete onkeydown="enter_down(event);" ShowLabel="false" Items="@AllTags" IsSelectAllTextOnFocus="true" OnEnterAsync="TagPress"/>里的onkeydown

最新文章

  1. C# winform 界面美化技巧(扁平化设计)
  2. HDU 1848 Fibonacci again and again【SG函数】
  3. C++预定义字符函数
  4. Steve Loughran:Why not raid 0,its about time and snowflakes!!!
  5. Win7系统中提示:本地无法启动MySQL服务,报的错误:1067,进程意外终止的解决方法。
  6. sqlSQL2008如何创建定时作业
  7. [ActionScript 3.0] AS3.0 Loader加载子swf时是否需要指定新的应用程序域ApplicationDomain
  8. 宝马测试(C++实现)
  9. [转]Ubuntu下GitHub的使用
  10. 手把手教你使用UICollectionView写公司的项目
  11. Linux shell的&amp;&amp;和||--转载
  12. Android 图标右上角添加数字提醒
  13. 用webclient.DownloadFile下载exe文件时大小为0
  14. Oracle的Net Configuration Assistant 配置
  15. c# 应用NPOI 获取Excel中的图片,保存至本地的算法
  16. [LeetCode] Find K-th Smallest Pair Distance 找第K小的数对儿距离
  17. jenkins自动化工具使用教程(转)
  18. 工程设计文档服务EngineerCMS
  19. Linux 下安装Node.js
  20. python---wsgiref初探

热门文章

  1. 使用 Mosh 来优化 SSH 连接
  2. SMB共享配置
  3. 一文读懂蓝绿发布、A/B 测试和金丝雀发布的优缺点
  4. 【Ansible】ansible容器学习环境搭建
  5. 判断一文件是不是字符设备文件,如果是将其拷贝到 /dev 目录下?
  6. Java并发机制(7)--线程池ThreadPoolExecutor的使用
  7. Error 和 Exception 有什么区别?
  8. 你将如何使用 thread dump?你将如何分析 Thread dump?
  9. 客户端回调 Watcher?
  10. ACM - 最短路 - CodeForces 295B Greg and Graph