0

asp.netページにupdatepanelの周りにラップされた単純なテキストボックスがあります。

<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を呼び出すにはどうすればよいですか?

編集

Web構成ファイルに追加しました:

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

しかし、オートコンプリートは機能していないようです... jqueryで、単純に次のように変更しました。

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

しかし、私が言ったように、オートコンプリートは登場しません。Chromeの開発者ツールにエラーはありません。何が欠けている可能性がありますか?

4

1 に答える 1

1

LoadAddressweb.configにハンドラーを登録しましたか?

(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>
于 2012-05-01T14:19:36.760 に答える