.net 不使用webservice在文本框上自动完成扩展程序
我不想使用Web服务在文本框上填充自动完成扩展程序。在本例中,就是用户输入国家名称的地方,我不想每次都访问数据库。我更愿意将集合保持在会话状态,并将自动完成绑定到该状态 是否可以将ServicePath和/或ServiceMethod设置为codebehind中与webservice相反的内容 问候.net 不使用webservice在文本框上自动完成扩展程序,.net,asp.net,asp.net-ajax,c#-3.0,.net,Asp.net,Asp.net Ajax,C# 3.0,我不想使用Web服务在文本框上填充自动完成扩展程序。在本例中,就是用户输入国家名称的地方,我不想每次都访问数据库。我更愿意将集合保持在会话状态,并将自动完成绑定到该状态 是否可以将ServicePath和/或ServiceMethod设置为codebehind中与webservice相反的内容 问候 库马尔您的国家/地区列表是否发生变化,或因用户而异?将其置于会话状态似乎也没有意义。我不明白你为什么要为此攻击服务器 考虑将所有值直接呈现为HTML,然后使用Javascript在客户端完全自动完成
库马尔您的国家/地区列表是否发生变化,或因用户而异?将其置于会话状态似乎也没有意义。我不明白你为什么要为此攻击服务器
考虑将所有值直接呈现为HTML,然后使用Javascript在客户端完全自动完成。您可以在现有web项目中使用本地asmx文件并连接到该文件。在那里,您可以在这里放置您需要的任何逻辑,这样,如果您不想,就不必访问数据库。它实际上就像另一个访问会话状态应该没有问题的网页一样。不幸的是,除了侵入javascript阻止浏览器调用获取列表之外,没有其他直接的选择 我能看到的唯一其他选择是创建一个Web服务&使用
AutoCompleteExtender
的EnableCaching
属性,以确保将Web服务的结果缓存在客户端上,从而避免对Web服务(以及数据库)的调用
编辑:再想一想,我认为可以在页面中使用WebMethod
属性标记公共静态方法,并将ServicePath
设置为您的aspx页面
看看这是否有帮助-
我认为应该行得通。但是我不确定框架是否要求它是Web服务 您可以将onclientpopulating属性设置为本地javascript函数,例如onclientpopulating=“onPopulating”,然后在该js函数中提供本地数据,而不是访问web服务。下面是我使用的一个实现,它从来不会访问Web服务。completionData变量保存所有数据,我通过这些数据根据用户在文本框中输入的内容进行迭代以查找匹配项。这是一个古老的例子。如果我现在实施的话,我可能会做得有点不同
function onPopulating(ace, args)
{
var prefixText = ace._currentCompletionWord();
var filteredItems = GetFilteredItems(prefixText);
ace._update(prefixText,filteredItems,false);
args.set_cancel(true);
}
function GetFilteredItems(prefixText)
{
var filteredItems = [];
for (var nCount=0; nCount < completionData.length; nCount ++)
{
if (completionData[nCount].startsWith(prefixText))
{
Array.add(filteredItems,completionData[nCount]);
}
}
return filteredItems;
}
函数填充(ace、args)
{
var prefixText=ace.\u currentCompletionWord();
var filteredItems=GetFilteredItems(prefixText);
ace.\u更新(前缀文本、筛选器数据项、false);
参数设置\取消(真);
}
函数GetFilteredItems(prefixText)
{
var filteredItems=[];
对于(var nCount=0;nCount
我正在将国家/地区从db绑定到下拉列表。当用户在可编辑文本框中键入任何内容时,我需要从下拉列表中获取匹配的记录,而无需再次转到db?