在 C# 中构建服务器端自动完成

Posted

技术标签:

【中文标题】在 C# 中构建服务器端自动完成【英文标题】:Building a server side autocomplete in C# 【发布时间】:2012-06-21 13:04:13 【问题描述】:

我想知道是否可以在服务器端构建自动完成功能(使用 ASP.NET 和 C#)。假设我有一个班级 City...

public class City

    public string m_CityName;
    public string m_CityId;
    public City()  
    public City(string cityName, string cityId) 
     m_CityName = cityName; m_CityId = cityId; 

有了这个,我在服务器端构建了一个 City 的 ArrayList。我想要的是构建一个自动完成功能,它会显示城市名称,但会返回城市的 id。

我可以在服务器端执行此操作还是必须在客户端执行此操作? 如果我需要在客户端执行此操作,最好、最快和最安全的方法是什么?

城市的数据,名称和id,来自一个XML文件。

谢谢。

【问题讨论】:

使用 AJAX:asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/AutoComplete/…,你也可以在客户端这样做:devbridge.com/projects/autocomplete/jquery 我正在尝试使用Ajax,但是我以前用过这个,所以我正在学习。我想知道是否有其他方法。 不用太具体(是的,这是一条路过的评论),您想要做的是...... 1)将服务器端功能公开为服务(网络方法,也许?某种返回 JSON 的处理程序)。该服务将接受一个字符串并返回该字符串的匹配项。这些匹配可以是整个对象,只是用 JSON 表示。 2) 编写客户端 javascript 以响应 UI 事件(按键)并使用 AJAX 联系该服务。 @Triwis:是的,我在评论中添加的第二个 url 描述了一种可以使用 JSON 的方式 @Triwis:“另一种方法” - 不是真的。客户端和服务器端之间存在硬性分离。客户端正在处理 UI 事件,并且必须向服务器发出离散请求并获得响应。在没有完整页面重新加载的情况下(这不会产生非常好的自动完成),它需要使用 AJAX。一个提示是稍微延迟(可能是 100 毫秒 - 200 毫秒)进行查找,这样您就不会在有人快速键入时用请求轰炸服务器。 【参考方案1】:

如前所述,我个人会使用 AJAX。让服务器管理数据逻辑通常是一个更好的主意(根据我的经验)。

但是,如果它是静态文件,您可以使用 jQuery 加载 XML。这里有一个例子:

http://net.tutsplus.com/tutorials/javascript-ajax/use-jquery-to-retrieve-data-from-an-xml-file/

使用 AJAX 和 jQuery XML 方法时,小心不要用请求轰炸服务器(或客户端),过去我将搜索限制为每三次按键,并且搜索的长度也超过三个字符.但正如大卫所说,延迟请求也是一种选择。

【讨论】:

以上是关于在 C# 中构建服务器端自动完成的主要内容,如果未能解决你的问题,请参考以下文章

使用NewLife网络库构建可靠的自动售货机Socket服务端

自动完成服务器端实现

html或pdf在服务器端打印c#

Nacos——Nacos服务端服务注册处理

c# winform开发,客户端和服务器端如何理解

confd+etcd完成后端服务器的自动检测