前提条件

ASP.NET AJAXおよびAjax Control Toolkitが使用可能な状態 (AjaxControlToolkit.dll設置,web.configはAJAX用に設定済み) であること。注意事項として、ACTのWebサービスはローカルWebサービスでなければなりません。(以下INTRODUCING MIROSOFT ASP.NET AJAXのp192より引用)

The Web Service has to be a local Web service that is installed on the same server machine and application as the page tat is using it. Note that this considaration holds true for all Web services used by ASP.NET AJAX extenders.

確認環境

  • OS:Windows Server 2003 R2 SP1
  • 開発環境: Visual Studio 2005 Professional
  • ASP.NET AJAX Extensions:ASP.NET 2.0, AJAX Extensions 1.0
  • AJAX Control Toolkit:AJAX Control Toolkit 1.0.1618

Webサービス用のクラスを作成

ソリューションを右クリック→[新しい項目の追加]でWebサービスを作成します。 ことのき、以下のように[ScriptService]アトリビュートを追加する。

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]   // <- これ
public class AJaxTestWebService : System.Web.Services.WebService{...}

Webサービス用のメソッドを作成

[WebMethod]アトリビュートを設定してメソッドを追加します。

    [WebMethod]
    public string[] GetNationalSuggestions(string prefixText, int count)
    {
        string[] nationals = new string[]{
            "Republic of Iceland ",
            "Ireland",
            "Azerbaijan Republic",
            "Islamic State of Afghanistan",
            "United States of America",
            "United Arab Emirates ",
            "合衆国日本",
            "ブリタニア",
            "中華連邦"
        };
        List<string> suggestions = new List<string>();
        foreach(string n in nationals){
            if(n.StartsWith(prefixText)){
                suggestions.Add(n);
            }
        }
        return suggestions.ToArray();
    }

使い方

こんな感じでASPXファイルにコードを記述します。

国名:<asp:TextBox ID="txtNational" runat="server"></asp:TextBox>
        <act:AutoCompleteExtender ID="aceNationalSuggestion"
        runat="server" TargetControlID="txtNational" Enabled="true"
        MinimumPrefixLength="1"
        ServicePath="~/TestWebService/TestWebService.asmx"
        ServiceMethod="GetNationalSuggestions">
</act:AutoCompleteExtender>