jquery autocomplete不确定如何加载C#处理程序

时间:2012-05-01 14:06:01

标签: jquery asp.net

我的asp.net页面上有一个简单的文本框,包含在一个更新面板上:

<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Always" ChildrenAsTriggers="true" runat="server">
                                    <ContentTemplate>
                                        <asp:TextBox ID="txtShipToName" runat="server" 
                                            ToolTip="Enter a name such as a company name or contact name." 
                                            MaxLength="50"></asp:TextBox>
                                    </ContentTemplate>
                                    </asp:UpdatePanel>

尝试实现自动完成...所以我创建了一个.ashx文件(IHttpHandler),如下所示:

 public class LoadAddress : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            DataSet ds;
            Dictionary<long, string> lstAddresses = new Dictionary<long, string>();

            ds = BL.GetAddresses(string.Empty, "both", 0, 100); //just snatching some data...

            foreach(DataRow dr in ds.Tables[0].Rows)
            {
                lstAddresses.Add(Convert.ToInt64(dr["AddressID"].ToString()), dr["Name"].ToString());
            }

            StringBuilder builder = new StringBuilder();

            foreach (KeyValuePair<long, string> item in lstAddresses)
            {
                builder.Append(string.Format("{0}|{1}|{2}",
                      item.Value,
                      item.Key,
                      Environment.NewLine));
            }

            context.Response.Write(builder.ToString());
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }

但是我不确定如何在jquery中调用它,我试过了:

 $("#<%= txtShipToName.ClientID %>").autocomplete('LoadAddress.ashx').
        result(function (event, data, formatted) { // data[0] : Address, data[1] : Address ID
        });

但是结果是未定义的,注意这个方法甚至不存在......我怎么能调用LoadAddress.ashx?

修改

我添加到了网络配置文件中:

    <httpHandlers>
      <add verb="*" path="LoadAddress.ashx" type="MyShipper.LoadAddress"/>
    </httpHandlers>

但是自动完成似乎不起作用......在jquery中我将其改为:

$("#<%= txtShipToName.ClientID %>").autocomplete('LoadAddress.ashx');

但就像我说的那样,没有自动完成功能。 chrome中的开发人员工具没有错误。 我能错过什么?

1 个答案:

答案 0 :(得分:1)

您是否在web.config中注册了LoadAddress处理程序?

(iis 6):

<system.web>
  <httpHandlers>
      <add verb="*" path="LoadAddress.ashx" type="NameOfClass, NameOfAssembly"/>
  </httpHandlers>
</system.web>

(对于iis 7 +):

<system.webServer>
  <handlers>
      <add name="LoadAddress" verb="*" path="LoadAddress.ashx" type="NameOfClass, NameOfAssembly"/>
  </handlers>
</system.webServer>