我在使用 ASP.Net 中的 UpdateProgress 和 ScriptManager 时遇到问题。在 ScriptManager 中注册脚本时,UpdateProgress 无法显示(内联 CSS 属性 | display:none;)。我还使用这种方法在页面加载方法下以编程方式注册了脚本,ASP.NET 4.5 ScriptManager Improvements in WebForms,但仍然失败。提前致谢 :)。
ASP:
<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 有效!
编辑- 由于 Nathan 给出的指针,问题解决了。Mootools 和 MS AJAX 之间确实存在冲突。这是因为 Mootools 核心/更多中的声明“类型”被 MS AJAX 覆盖。幸运的是,可以通过将声明从“类型”更改为其他内容来宣传它。我在这里找到了解决方案,在“斯科特”的帖子下,顺便说一句;)。
我采取的步骤是:
- 打开您的 Mootools 核心和更多文件(我使用的是 VS2012,但 Notepad++ 应该可以正常工作)
- 查找(CTRL+F)“新类型”并替换为“新 mooTools”
- 查找(CTRL+F)“this.Type”并替换为“this.mooTools”
- 查找(CTRL+F)“类型”并替换为“mooTools”
- 确保你对两个文件都这样做(除非你只使用核心)
非常感谢 Nathan 和“Scott”帮助我。