我一整天都在与阿贾克斯挣扎,没有运气。我知道之前已经问过这个问题标题,但是我一直在倾诉其他很多关于这个问题的帖子,没有一个能为我提供解决方案。让我们从最简单的场景开始。
安装了Ajax Toolbox 15.1之后,我创建了一个新的Web应用程序,从默认页面删除内容,将文本框放到其上,然后尝试将Ajax AutoCompleteExtender放到文本框中。结果=对网页完全没有影响。 Toolbox具有所有AjaxControlToolkit.15.1,但是没有任何Ajax控件可以拖动到任何表单上。 (可以正确拖动其他控件 - 只有AjaxControlToolkit控件无效)
转到更复杂的场景,我尝试通过向项目添加对AjaxControlToolkit的引用来手动实现它 - 这需要HDD搜索来查找dll,并添加对此的引用。
手动添加引用后,我可以创建一个新页面,通过编辑aspx源,我可以创建一个构建和运行但不能正常运行的AjaxCompleteExtender。如果我将AjaxCompleteExtender连接到Web服务,它什么都不做。如果我将它连接到本地函数,它会给出一个奇怪的自动完成条目列表,如下所示......
<
D
O
C
T
Y
P
E
h
t
m
... etc...
我在ServiceMethod函数中添加了断点,但它们永远不会被调用。
以下是具有页内功能的版本的网页。
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
</asp:ScriptManager>
<asp:TextBox ID="txtBox" runat="server"></asp:TextBox>
<asp:AutoCompleteExtender ServiceMethod="AutoCompleteSymbol"
MinimumPrefixLength="2"
CompletionInterval="100" EnableCaching="false" CompletionSetCount="10"
TargetControlID="txtBox"
ID="AutoCompleteExtender1" runat="server" FirstRowSelected = "false">
</asp:AutoCompleteExtender>
以下是此页面背后的代码。
namespace Jug2013
{
public partial class TestForm : System.Web.UI.Page
{
[WebMethod]
[ScriptMethod]
public static string[] AutoCompleteSymbol(string partial, int count)
{
var retval = new List<string>();
retval.Add("Hello");
retval.Add("Hello2");
retval.Add("Hello3");
return retval.ToArray();
}
}
}
我已经多次针对在线示例检查了此版本的代码和Web服务版本,并尝试了我在示例代码中找到的许多不同的变体。在最后的绝望中,我已经卸载并重新安装了Ajax,但在任何地方都没有运气。