【问题标题】:UpdatePanel not refreshing when used in modal popup in ASP.Net在 ASP.Net 的模式弹出窗口中使用 UpdatePanel 时不刷新
【发布时间】:2012-10-08 21:03:19
【问题描述】:

我的网站使用一个母版页,默认情况下我已将模式弹出 div (id="myModal") 置于隐藏状态。我正在使用 twitter 引导模式弹出窗口 (modal.js) 和 jQuery.load() 来使用另一个名为 Feedback.aspx 的 aspx 页面填充#myModal 的正文。

模态按预期弹出并显示 feedback.aspx 内容(这是一个完整的页面,包括 doctype、HTML、head 和 body 标签......也许不应该?),但因为它没有显示在iframe,当我提交页面时,它会执行 PostBack 并使用整个 feedback.aspx 页面刷新父级。

我希望 feedback.aspx 在模式弹出窗口中简单地刷新,而不是整个父页面。

我尝试将 feedback.aspx 页面的整个正文内容包装在 UpdatePanel(使用 ScriptManager)中,当我现在单击提交按钮时,数据会保存到数据库中,并且模式窗口保持打开状态,但我的不显示 ModalAlertBox 消息。我假设我的模态窗口没有更新。

我尝试将 updatepanel.update() 添加到我的 submitbutton.click 事件中,但它仍然不起作用。

感谢任何帮助! 谢谢!

母版页:

    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>    
    <div id="myModal" class="modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"></div>

Feedback.aspx(用作#myModal 内容):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    ...
</head>
<body>
<form ...>
<asp:ScriptManager ID="ModalScriptManager" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="ModalUpdatePanel" runat="server" UpdateMode="Always">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="btnModalSubmit" EventName="Click" />
    </Triggers>
    <ContentTemplate>
        <fieldset>
           ...
           <div id="ModalAlertBox" class="alert" runat="server" visible="false">
               <button type="button" class="close" data-dismiss="alert">×</button>
               <asp:Label ID="lblModalMsg" runat="server" Text=""></asp:Label>
           </div>
           ...
        </fieldset>
    </ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>

Feedback.aspx.vb

Protected Sub btnModalSubmit_Click(sender As Object, e As System.EventArgs) Handles btnModalSubmit.Click
    Try
        GetAccount(_Account)
        If _Account.Exists Then
            ... Save Logic ...
            lblModalMsg.Text = "Success Msg."
        Else
            lblModalMsg.Text = "Fail Msg."
        End If
    Catch ex As Exception
        clsExceptionHandler.log(ex)
        lblModalMsg.Text = "Unexpected Error Msg."
    End Try
    Me.ModalAlertBox.Visible = True
    Me.ModalUpdatePanel.Update()
End Sub

【问题讨论】:

    标签: asp.net vb.net updatepanel


    【解决方案1】:

    这个问题已经解决了。我只将 ModalAlertBox 包装在 UpdatePanel 中,而不是整个表单,它已经解决了这个问题。

    ....    
    <asp:UpdatePanel ID="ModalUpdatePanel" runat="server" UpdateMode="Conditional">
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="btnModalSubmit" EventName="Click" />
        </Triggers>
        <ContentTemplate>
            <fieldset>
                <div id="ModalAlertBox" class="alert" runat="server" visible="false">
                    <button type="button" class="close" data-dismiss="alert">×</button>
                    <asp:Label ID="lblModalMsg" runat="server"></asp:Label>
                </div>
            </fieldset>
        </ContentTemplate>
    </asp:UpdatePanel>
    ....
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-19
      • 1970-01-01
      • 1970-01-01
      • 2016-03-31
      • 1970-01-01
      • 1970-01-01
      • 2011-03-22
      • 1970-01-01
      相关资源
      最近更新 更多