none
AJAX Control Toolkitの入力補助が正常に機能しない RRS feed

  • 質問

  • いつも大変お世話になっております。

    visual web developerを使ってWEBアプリを作成しています。
    ajax cotrol toolkitをダウンロードして使おうと思っています。
    インストールまではうまくいったと思うのですが,
    入力補助機能がうまく動作しません。
    どこを修正したらいいかご教授ください。

    環境は以下です。
    ASP.NET 4.0。
    IE,Firefox,Chromeすべて最新バージョンです。

    インストールしたのは下記サイトの「Ajax Control Toolkit .NET 4」です。
    http://ajaxcontroltoolkit.codeplex.com/releases/view/116091
    インストールした後解凍し,
    作成中のprojectフォルダ内のbinというフォルダに
    「AjaxControlToolkit.dll」とサブフォルダ全てをコピー。
    visual web developerを開いてツールボックスに新しいタブを作成し,
    作成したタブを右クリックして「アイテムの選択」で,
    開いた「アイテムの選択」ダイアログのなかから「参照」をクリックし,
    先ほど追加した「AjaxControlToolkit.dll」を選択。
    作成中の「Default.aspx」を開くとajaxtoolkitが追加できるようになりました。

    ためしに日付入力補助機能を使ってみようと以下のようにしてみました。

    <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>

        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:CalendarExtender ID="CalendarExtender1" runat="server"
        TargetControlID="TextBox1">
        </asp:CalendarExtender>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

    http://localhost:XXXXX/Default.aspx
    を開いてテキストボックスをクリックしましたがカレンダーは表示されません。

    初日にajaxtoolkitをインストールして同じ作業をした日には正常に動作しました。
    やったーできたーと思って帰社し,翌日また同じように作ってみたらできなくなってしまいました。

    コンボボックスを配置し,
    [AutoComplete Mode]から「Append」を選択してもやはり無反応のままでした。

    Web.configになにか書き足しが必要なのかなとも思うのですが,
    初日にうまくいったので必要ないのかもとも思っています。

    よろしくお願いいたします。

    2014年3月27日 1:36

回答

  • > ファイルまたはアセンブリ 'AjaxMin, Version=4.97.4951.28478, Culture=neutral,
    > PublicKeyToken=21ef50ce11b5d80f'、またはその依存関係の 1 つが読み込めませんでした。
    > 指定されたファイルが見つかりません。
     
    AjaxMin.dll バージョン 4.97.4951.28478 がないと言ってます。

    以下のサイトから Recommended Download .NET 4 用をダウンロードしてみましたが、その zip ファイルに含まれていました。

    初日に動いたと言うのが解せないですが、AjaxMin.dll も Bin フォルダにコピーしたら解決しませんか?

    http://ajaxcontroltoolkit.codeplex.com/releases/view/116091


    #自分が今使っている旧バージョン 70607 には AjaxMin.dll は含まれておらず、AjaxControlToolkit.dll のみコピーして問題なく動いています。何か変更があったのかどうかは不明です(調べていません)。


    • 編集済み SurferOnWww 2014年3月27日 8:40 誤記訂正:28483 がない ⇒ 28478 がない
    • 回答としてマーク masunona 2014年4月2日 4:39
    2014年3月27日 8:05

すべての返信

  • > 初日にajaxtoolkitをインストールして同じ作業をした日には正常に動作しました。
    > やったーできたーと思って帰社し,翌日また同じように作ってみたらできなくなってしまいました。

    初日と翌日で何かを変えた(変わった)以外に原因はないと思いますが、心当たりはないですか?

    掲示板の反対側にいて掲示板に書いてあること以外知りえない回答者や一般閲覧者にはそのあたりは分かりません。

    質問者さんに心当たりがなければ、もう一度初日と同じようにやってみるほかなさそうです。

    一つアドバイス。Ajax Control Toolkit を使う場合は ToolkitScriptManager を使用してください。

    2014年3月27日 4:37
  • >Web.configになにか書き足しが必要なのかなとも思うのですが,

    Web.Configへの設定も必要だったと思います。sample websiteのWeb.Configも一応、確認してみて下さい。

    (参考)
    ajaxToolkitの設定
    http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=45869&forum=7


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/


    • 編集済み trapemiyaModerator 2014年3月27日 7:35 引用が間違っていたので修正
    2014年3月27日 5:13
    モデレータ
  • いつもありがとうございます!
    私も前日に出来てうれしく,翌日意気揚々を出社したらできなくなっていて原因不明です。

    下記作業をもう一度やってみたのですが状況は同じでした。
    >visual web developerを開いてツールボックスに新しいタブを作成し,
    >作成したタブを右クリックして「アイテムの選択」で,
    >開いた「アイテムの選択」ダイアログのなかから「参照」をクリックし,
    >先ほど追加した「AjaxControlToolkit.dll」を選択。

    先ほどまではScriptManagerを使ったのですが,
    教えていただいたToolkitScriptManagerに早速かえてみました。

    <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>

            <cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
            </cc1:ToolkitScriptManager>
            <cc1:CalendarExtender ID="CalendarExtender1" runat="server"
                TargetControlID="TextBox1">
            </cc1:CalendarExtender>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

    すると以下のようなエラーが出てしまいました。

    ファイルまたはアセンブリ 'AjaxMin, Version=4.97.4951.28478, Culture=neutral, PublicKeyToken=21ef50ce11b5d80f'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。

    対処法を探しているところです。
    また何かお気づきの点ありましたら教えてください。
    よろしくお願いいたします!
    2014年3月27日 7:06
  • > Web.Configへの設定も必要だったと思います。sample websiteのWeb.Configも一応、確認してみて下さい。

    web.config に追加するのは、以下のページの「2. Control Toolkitのコントロール群をアプリケーションに登録する」のセクションにあるもののみのはずです。しかし、質問者さんの場合は、ページ内に設定されているので(<%@ Register Assembly="AjaxControlToolkit" ... の部分)、web.config に設定する必要はないと思いますが?

    [ASP.NET AJAX]ASP.NET AJAX Control Toolkitを利用するには?(2008年7月改訂版)[2.0、3.0、3.5、C#、VB]
    http://www.atmarkit.co.jp/fdotnet/dotnettips/561aspajaxprepare/aspajaxprepare.html

    2014年3月27日 7:14
  • web.config に追加するのは、以下のページの「2. Control Toolkitのコントロール群をアプリケーションに登録する」のセクションにあるもののみのはずです。しかし、質問者さんの場合は、ページ内に設定されているので(<%@ Register Assembly="AjaxControlToolkit" ... の部分)、web.config に設定する必要はないと思いますが?

    実際にはもっと多くのものが登録されると思っていましたが、違ったかな?。今、直接確認できる環境にないので確かめられないのですが・・・。ただし、今回の件と関係があるかどうかはわかりません。

    (参考)以下のページの「追記」
    AjaxControlToolkitを実装するサンプル
    http://dream-themetropolis.blog.ocn.ne.jp/blog/2010/04/ajaxcontroltool.html


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    2014年3月27日 7:32
    モデレータ
  • いつもありがとうございます!

    あるページで見つけたものを参考に,現在あるweb.configに書き足ししてみたんですが,
    今度はweb.configのエラーになってしまいます。

    見つけたのは以下のようなコードです。
    <?xml version="1.0"?>
    <configuration>
      ……中略……
      <system.web>
         ……中略……
        <pages>
          <controls>
             ……中略……
            <add tagPrefix="ajaxToolkit"
                 namespace="AjaxControlToolkit"
                 assembly="AjaxControlToolkit"/>
             ……中略……
          </controls>
          ……中略……
        </pages>
         ……中略……
      </system.web>
      ……中略……
    </configuration>

    自分のweb.configがこれとあんまり同じ形式でないので,適当な場所に書き込みしてみました。
    自分のweb.configに書き込みしてみたものが以下です。

    <?xml version="1.0"?>
    <!--
      ASP.NET アプリケーションを構成する方法の詳細については、
      http://go.microsoft.com/fwlink/?LinkId=169433 を参照してください
      -->
    <configuration>
        <connectionStrings>
      <add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
       providerName="System.Data.SqlClient" />
    ……中略……
     </connectionStrings>
        <system.web>
            <compilation debug="true" strict="false" explicit="true" targetFramework="4.0"/>
            <authentication mode="Forms">
                <forms loginUrl="~/Account/Login.aspx" timeout="2880"/>
            </authentication>
            <membership>
                <providers>
                    <clear/>
                ……中略……
                </providers>
            </membership>
            <profile>
                <providers>
                    <clear/>
                ……中略……
                </providers>
            </profile>
            <roleManager enabled="false">
                <providers>
                    <clear/>
                ……中略……
                </providers>
            </roleManager>
            <add tagPrefix="ajaxToolkit" ←★
                 namespace="AjaxControlToolkit" ←★
                 assembly="AjaxControlToolkit"/> ←★

      </system.web>
        <system.webServer>
            <modules runAllManagedModulesForAllRequests="true"/>
        </system.webServer>
    </configuration>


    引き続きお気づきの点ありましたら教えてください。
    よろしくお願いいたします!
    2014年3月27日 7:51
  • > ファイルまたはアセンブリ 'AjaxMin, Version=4.97.4951.28478, Culture=neutral,
    > PublicKeyToken=21ef50ce11b5d80f'、またはその依存関係の 1 つが読み込めませんでした。
    > 指定されたファイルが見つかりません。
     
    AjaxMin.dll バージョン 4.97.4951.28478 がないと言ってます。

    以下のサイトから Recommended Download .NET 4 用をダウンロードしてみましたが、その zip ファイルに含まれていました。

    初日に動いたと言うのが解せないですが、AjaxMin.dll も Bin フォルダにコピーしたら解決しませんか?

    http://ajaxcontroltoolkit.codeplex.com/releases/view/116091


    #自分が今使っている旧バージョン 70607 には AjaxMin.dll は含まれておらず、AjaxControlToolkit.dll のみコピーして問題なく動いています。何か変更があったのかどうかは不明です(調べていません)。


    • 編集済み SurferOnWww 2014年3月27日 8:40 誤記訂正:28483 がない ⇒ 28478 がない
    • 回答としてマーク masunona 2014年4月2日 4:39
    2014年3月27日 8:05
  • >あるページで見つけたものを参考に,現在あるweb.configに書き足ししてみたんですが,

    とりあえず、上で紹介したページに書かれている通り、「AjaxControlToolkitのSampleWebSiteフォルダ内にあるWeb.config」と比較してみて下さい。
    Web.configが原因になっているかどうかはわかりませんが、一つずつ確実に確かめて原因を絞っていくのが王道です。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    2014年3月27日 8:07
    モデレータ
  • > あるページで見つけたものを参考に,現在あるweb.configに書き足ししてみたんですが,

    必要ないとレスしてますが、見てますか?

    2014年3月27日 8:20
  • > 実際にはもっと多くのものが登録されると思っていましたが、違ったかな?。今、直接確認できる
    > 環境にないので確かめられないのですが・・・。

    確かめてから書いていただければと思います。

    サーバーコントロールの dll を Bin フォルダに配置する場合、ページ内に <%@ Register Assembly="AjaxControlToolkit" ... と記述するだけですみます。

    2014年3月27日 8:26
  • >確かめてから書いていただければと思います。

    そこは申し訳ないと思っています。動作しない原因が絞れていない以上、いろいろな可能性を探り、情報を提供するのが良いと思ったのが理由です。

    (追記)

    July 2013 Release
    http://ajaxcontroltoolkit.codeplex.com/releases/view/109918

    上のページに、

    「Use the new AjaxControlToolkit.CombineScripts handler to cache Ajax Control Toolkit scripts for an entire app. To take advantage of the CombineScripts handler, you need to register the handler in your web.config file (see the sample website).」

    と書かれていますので、ものによっては必要なのかもしれません。とりあえず本件とは関係ないと思いますが。
    #未検証です。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    2014年3月27日 8:40
    モデレータ
  • たくさん教えていただき有難うございます。
    別の急ぎの仕事にかかったりして確認が遅くなってしまって大変申し訳ありませんでした。

    AjaxMin.dllをフォルダにコピーしてみたところ正常に動作しました!
    今回は,Web.configの修正は必要なかったようです。

    いつも問題を解決してくださり大変感謝しています。
    ありがとうございました!
    2014年4月2日 4:38
  • > AjaxMin.dllをフォルダにコピーしてみたところ正常に動作しました!

    それだけで解決したということですと、初日はうまく動いて翌日動かなくなったことが解せません。もうそのあたりの原因は分からないのでしょうか?

    2014年4月2日 4:58
  • SurferOnWww 様

    大変遅くなってしまって申し訳ありません。
    初日は色々試行錯誤してやっていて,
    bin内をすべてコピーしてみたり,逆にコピーするものが不足していたり・・・
    できたと思って作業を続けていたらいつの間にかできなくなってしまっていたりと
    ぐちゃぐちゃしていました。
    もしかしたら何かのタイミングで,AjaxMin.dllもコピーできていたのかもしれません。

    あいまいなことで申し訳ありません・・・。
    その後正常に動作しています。
    ありがとうございました!

    2014年4月15日 7:19