部分回发后UpdatePanel的静态内容消失

时间:2014-12-26 20:07:29

标签: asp.net telerik asp.net-ajax updatepanel webusercontrol

我已经搜索过这个问题但是已经在这个问题上提出的问题对我没有帮助。首先,我正在深入Ajax领域,并不熟悉它。我创建了一个非常简单的WebUserControl,它基本上是一个联系表单。用户控件的html是,

<telerik:RadAjaxManagerProxy ID="AjaxManagerProxy1" runat="server">
<AjaxSettings>
    <telerik:AjaxSetting AjaxControlID="btnSubmitContactForm">
        <UpdatedControls>
            <telerik:AjaxUpdatedControl ControlID="upContactForm" LoadingPanelID="RALP_ContactForm" />
        </UpdatedControls>
    </telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManagerProxy>


<telerik:RadAjaxLoadingPanel ID="RALP_ContactForm" runat="server" Transparency="5">
                <img src="images/cf_animation.GIF" alt="Processing Request..." />
</telerik:RadAjaxLoadingPanel>

<asp:UpdatePanel ID="upContactForm" runat="server">
<ContentTemplate>
    <div id="form-main">
        <div id="form-div">
            <p class="name">
                <asp:TextBox ID="txtContactName" runat="server"></asp:TextBox>
            </p>
            <p>
                <asp:TextBox ID="txtContactEmail" runat="server"></asp:TextBox>
            </p>
            <p>
                <asp:TextBox ID="txtContactComment" TextMoe="MultiLine" runat="server"></asp:TextBox>
            </p>
            <p><asp:Label ID="lblMessage" runat="server" Visible="false"></asp:Label></p>
            <div>
                <asp:Button ID="btnSubmitContactForm" runat="server"
                    Text="SEND" OnClick="btnSubmitContactForm_Click" />
            </div>
        </div>
    </div>

正如您所看到的,控制非常简单。我在主页上调用控件,

<uc1:FooterContactForm ID="FooterContactForm" runat="server"></uc1:FooterContactForm>

现在它在渲染时运行得非常好。当我单击SEND按钮然后显示加载图像,并在服务器端表单内容通过电子邮件发送给我。

当这个过程完成后,突然的页脚会消失。这不仅仅是用户控制的情况,而是在没有用户控制的情况下实现它时,UpdatePanel的内容消失了。当我在服务器端发送电子邮件之后放入以下代码行时,内容是可见的并且不会消失。

upContactForm.Update();

这充满了联系表格消失的问题。但是当我尝试重置TextBox时,它给出了错误,为了更新更新面板,我必须将UpdateMode设置为条件。当我将UpdateMode设置为条件时,错误消失但联系表单在回发后再次消失。

专家友好地帮助我,因为我不知道这里发生了什么。

1 个答案:

答案 0 :(得分:1)

您不能将RadAjaxManager / RadAjaxManagerProxy / RadAjaxPanel中的AJAX设置与UpdatePanel嵌套,因为嵌套更新面板可能无法预测。

这是一个应该正常工作的设置:

        <telerik:RadAjaxManagerProxy ID="AjaxManagerProxy1" runat="server">
            <AjaxSettings>
                <telerik:AjaxSetting AjaxControlID="btnSubmitContactForm">
                    <UpdatedControls>
                        <telerik:AjaxUpdatedControl ControlID="Panel1" LoadingPanelID="RALP_ContactForm" />
                    </UpdatedControls>
                </telerik:AjaxSetting>
            </AjaxSettings>
        </telerik:RadAjaxManagerProxy>

        <telerik:RadAjaxLoadingPanel ID="RALP_ContactForm" runat="server" Transparency="5">
            <img src="images/cf_animation.GIF" alt="Processing Request..." />
        </telerik:RadAjaxLoadingPanel>

        <asp:Panel ID="Panel1" runat="server">
            <div id="form-main">
                <div id="form-div">
                    <p class="name">
                        <asp:TextBox ID="txtContactName" runat="server"></asp:TextBox>
                    </p>
                    <p>
                        <asp:TextBox ID="txtContactEmail" runat="server"></asp:TextBox>
                    </p>
                    <p>
                        <asp:TextBox ID="txtContactComment" TextMoe="MultiLine" runat="server"></asp:TextBox>
                    </p>
                    <p>
                        <asp:Label ID="lblMessage" runat="server" Visible="false"></asp:Label>
                    </p>
                    <div>
                        <asp:Button ID="btnSubmitContactForm" runat="server"
                                    Text="SEND" OnClick="btnSubmitContactForm_Click" />
                    </div>
                </div>
            </div>
        </asp:Panel>