在 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# 中构建服务器端自动完成的主要内容,如果未能解决你的问题,请参考以下文章