【问题标题】:Issue in displaying loader gif via Ajax通过 Ajax 显示加载程序 gif 的问题
【发布时间】:2017-01-17 10:29:32
【问题描述】:

我有一个下面的部分,用于显示与更新面板关联的加载器 gif

  <asp:ScriptManager runat="server"></asp:ScriptManager>
 <asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="updPnlPromotion">
    <ProgressTemplate>
                <img alt="" src="Image/Ajaxloader.gif" />
    </ProgressTemplate>
 </asp:UpdateProgress>

这是包含下拉列表的更新面板,它是一个数据绑定控件,绑定在单选按钮选中更改事件上,但不是部分回发和加载器 gif 的显示,而是整个页面回发。

 <asp:UpdatePanel ID="updPnlPromotion"  runat="server" UpdateMode="Always">
              <ContentTemplate>
                <td align="left" style="width: 20%;background-color:#CDCD9C">
                    <asp:radiobutton ID="rdbPromotion" runat="server" Text="New Promotion" AutoPostBack="true" GroupName="TacPlan" OnCheckedChanged="rdbPromotion_OnCheckedChanged"  style="font-weight:bold" />
                </td>
                <td align="left" style="width:30%; vertical-align:middle; background-color:#EBEBEB; text-align:center">
                    <asp:DropDownList runat="server" ID="ddlPromotion" Width="95%"></asp:DropDownList>
                </td>
                <td>
                    <asp:Label Text="*" ForeColor="Red" Visible="false" runat="server" ID="lblPromoPlanMandatory"></asp:Label>
                </td>
               </ContentTemplate>
               <Triggers>
                <asp:AsyncPostBackTrigger ControlID="rdbPromotion" EventName="CheckedChanged" />
               </Triggers>
          </asp:UpdatePanel>

【问题讨论】:

    标签: asp.net .net ajax


    【解决方案1】:

    我找到了我的问题的解决方案,在查看 web.config 文件后,我发现了奇怪的设置 xhtmlConformance mode="Legacy" ,它基本上停止了页面以某种方式进行 ajaxify,通过删除它,它按预期工作。

    【讨论】:

    • 我很高兴你明白了!
    【解决方案2】:

    我认为您发布的代码没有问题。我创建了一个新的 ASPX 页面并将您的代码复制到其中。它按预期工作(我添加了一个计数器来监控加载事件):

    这是我用于测试的代码:

    Public Sub rdbPromotion_OnCheckedChanged(sender As Object, e As EventArgs) Handles rdbPromotion.CheckedChanged
        System.Threading.Thread.Sleep(2000)
    End Sub
    
    Private Sub Default5_Load(sender As Object, e As EventArgs) Handles Me.Load
        Me.counter.Text = Integer.Parse(Me.counter.Text) + 1
    End Sub
    

    看起来很遥远,但也许您正在测试的浏览器不支持部分呈现,或者 ASP.NET 认为它不支持?:

    http://ajax.asp.net/ajax/documentation/live/mref/P_System_Web_UI_ScriptManager_EnablePartialRendering.aspx

    【讨论】:

    • 感谢您的回复,但这对我不起作用。我尝试了您的解决方案,但看不到加载器 gif 出现。
    • 我建议创建一个新页面,只添加有问题的代码,并确保它在最小状态下工作。如果是这样,您可以逐步引入其余代码。这将帮助您隔离导致它不起作用的原因。我不知道那会是什么。
    • Ben..我使用开发工具找出问题所在..如果 (typeof(Sys) === 'undefined') throw new Error('ASP. NET Ajax 客户端框架加载失败。');在搜索解决方案后,我添加了处理程序以在 web.config 中包含 scriptresource.axd。异常得到了解决,但它仍然没有部分回发,也没有出现图像。这也是在 IE 11 浏览器中呈现更新进度的方式
  • 有趣。您使用的是哪个版本的 .NET?我创建了一个简单的 .NET 4.5 项目。你可以看看这是否适用于你的机器。 github.com/OsborneSupremacy/AjaxTroubleshoot
  • 我的项目是在 .Net 4.0 中开发的。奇怪的是,它在我打算 ajaxify 页面的解决方案中不起作用,因为当我使用此代码创建一个新项目时,它运行完美。我想知道忽略 Ajax 并使用回传来运行控制可能是什么努力。我还替换了新项目 web.config,但它不会改变其他解决方案中的行为。
  • 猜你喜欢
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    相关资源
    最近更新 更多