ASP.Net の UpdateProgress と ScriptManager に問題があります。ScriptManager にスクリプトを登録すると、UpdateProgress が表示されません (Inline CSS プロパティ | display:none;)。このメソッドASP.NET 4.5 ScriptManager Improvements in WebFormsを使用して、ページ読み込みメソッドの下にスクリプトをプログラムで登録しましたが、それでも失敗します。前もって感謝します :)。
Aspx:
<asp:ScriptManager ID="scriptManager" runat="server">
<Scripts>
<asp:ScriptReference Path="~/js/mootools-core-1.4.5.js" />
<asp:ScriptReference Path="~/js/mootools-more-1.4.0.1.js" />
</Scripts>
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
<div id="panel2Div" runat="server"></div>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button1" />
</Triggers>
</asp:UpdatePanel>
<asp:UpdateProgress ID="UpdateProgress1" runat="server">
<ProgressTemplate>
<p>Doing Stuff....</p>
</ProgressTemplate>
</asp:UpdateProgress>
コードビハインド:
protected void Button1_Click(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(3000);
panel2Div.InnerHtml = "Updated Panel 2";
}
ScriptManager で Script/ScriptReference タグを削除すると、UpdateProgress が機能します。
編集- ネイサンから提供されたポインターのおかげで問題が解決しました。実際、Mootools と MS AJAX の間には競合があります。これは、Mootools core/more の "Type" 宣言が MS AJAX によってオーバーライドされるためです。幸いなことに、宣言を「Type」から別のものに変更することで宣伝できます。私はここで解決策を見つけました.'Scott 's'投稿の下で、素晴らしい名前です;)
私が取った手順は次のとおりです。
- Mootools コアとその他のファイルを開きます (VS2012 を使用しましたが、Notepad++ は正常に動作するはずです)。
- (CTRL+F) "new Type" を検索し、"new mooTools" に置き換えます。
- (CTRL+F) "this.Type" を検索し、"this.mooTools" に置き換えます。
- (CTRL+F) "Type" を検索し、"mooTools" に置き換えます。
- 両方のファイルに対してこれを行うようにしてください(コアのみを使用している場合を除く)
私を助けてくれたネイサンと「スコット」に感謝します。