aspx页面代码:
<ajax:ScriptManager ID="ScriptManager1" runat="server">
<Services >
<ajax:ServiceReference Path="MyService.asmx" />
</Services>
</ajax:ScriptManager>
<asp:TextBox ID="txtMaterialNo"
Width="100%" runat="server" ></asp:TextBox>
<cc1:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" CompletionInterval="20"
MinimumPrefixLength="1" ServiceMethod="GetMaterialId"
ServicePath="MyService.asmx" TargetControlID="txtMaterialNo"> </cc1:AutoCompleteExtender>
MyService.asmx
[ScriptService]
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class MyService : System.Web.Services.WebService
public MyService()
{
//Uncomment the following line if using designed components
//InitializeComponent();
}
[System.Web.Services.WebMethod]
public string[] GetMaterialId(string prefixMaterial)
{
...... code
.... return
}
}
但是当我在文本框中输入时没有任何建议,当我将断点放在GetMaterialId时,我可以看到它不是来到这个函数,而是在textchange上调用MyService。
如何解决这个问题?为什么它调用构造函数而不是webmethod?
答案 0 :(得分:1)
Myabe您的项目未设置为AJAX.NET站点;试试Adding ASP.NET AJAX to an Existing ASP.NET Application
答案 1 :(得分:0)
我认为你的方法签名是错误的。应该是:
List<string> GetMaterialId(string prefixMaterial, int count)
其中count是要返回的项目数。
答案 2 :(得分:0)
您需要像这样添加ScriptMethodAttribute:
[WebMethod]
[ScriptMethod]
public string[] GetMaterialId(string prefixMaterial)
{
...... code
.... return
}
答案 3 :(得分:0)
您需要在源页面中注册Assembly =“AjaxControlToolkit”:
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>