使用Telerik在ASP.NET Core上实现自动完成控件

我一直在寻找一种“自动完成”解决方案,允许用户输入用户名搜索的任何值,而不是让Web应用程序带回那么多数据,这会减慢应用程序的速度。因此,我最初使用的解决方案是针对ASP.NET Core的Telerik自动完成。让客户端或服务器过滤工作相当简单,但最大的缺点是搜索结果中的每一项都将被返回,这可能导致一次发送大量数据,这从来都不是好事。您也可以直接将分页机制编码到控制器中,这样只会一次带回页面,但有一种更简单的方法!有一个虚拟化选项,但根据Telerik网站上的演示,除了主控制器动作之外还有许多其他功能可以返回特定搜索中的所有数据。示例代码显示了许多您可能不必编写的函数:

图1用于使用Telerik在ASP.NET Core上实现自动完成控件

演示中缺少值映射器控制器操作,并且您需要编写的内容并不明显。这也可能不适用于ASP.NET核心,因为没有明显的方法将请求验证令牌发送回控制器(如果您使用POST请求。)但是,根据虚拟化文档,该valueMapper功能的实现现在是可选的,仅在自动完成窗口小部件包含初始值或使用值方法时才需要。那么,现在我们可以简单地创建我们的HTML标记,如下所示:

图2用于使用Telerik在ASP.NET Core上实现自动完成控件

控制器代码与ASP.NET Core演示代码基本相同,因此,不需要进行其他更改以适应虚拟化,因为这将由Telerik Ajax代码处理。它基本上将正确的参数传递给您的控制器代码,以便只检索在任何给定时间点所需的任何数据页面(或更少):

图3用于使用Telerik在ASP.NET Core上实现自动完成控件

现在,您拥有完整的标记和控制器代码,并且可以开始测试自动完成功能的行为和性能。将它与仅启用的服务器筛选选项进行比较是有趣的,其中当调用自动完成控制器操作时,将dataset返回整个(当然,除非我之前提到过,否则您希望在服务器端实现自定义分页)。因此,对于潜在的大型用户数据库,这将不是一个实用的解决方案。

这是相同的标记,但只启用了服务器筛选,没有虚拟化。因此,正如您在每次调用中看到的那样,dataset返回整个:

图4用于使用Telerik在ASP.NET Core上实现自动完成控件

现在,让我们看一下为自动完成启用虚拟化的巨大差异:

图5用于使用Telerik在ASP.NET Core上实现自动完成控件

前几个请求是控制器根据请求返回特定页面(或少于一页)。因此,您可以看到返回的数据量大幅减少,这将提高自动完成响应速度,从而提高用户体验。

因此,正如您所看到的,Telerik自动完成功能的新简化虚拟化功能实现起来相当简单(如果您有耐心采用他们不完整的演示代码,并且还阅读了大部分文档)。您肯定需要对如何实际实现该功能有一个很好的理解,因此您可以在必要时对其进行微调。对于dataset需要按需搜索的非常大的应用程序,这也是一个理想的解决方案,同时提供响应式用户界面。

转载于:https://my.oschina.net/u/4090514/blog/3017880

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值