Asp.Net更新面板未更新

本文关键字:更新 Asp Net | 更新日期: 2023-09-27 18:20:45

我有两个页面,每个页面都有一个更新面板。它在两个页面上都有相同的内容和相同的触发器。

这就是它的样子:

                     <div id="rating">
                    <span class="rateTxt">Rate</span>
                    <telerik:RadRating ID="RadRating1" runat="server" ItemCount="5" SelectionMode="Continuous"
                        Precision="Item" Skin="Default" OnRate="RadRating1_Rate" AutoPostBack="true">
                    </telerik:RadRating>
                 </div>
            </li>
         </ul>
            <asp:UpdatePanel ID="UpdatePanel2" runat="server">
                <ContentTemplate>
                    <div id="divAddMessage" runat="server" visible="false">
                        <span class="rateTxt">Do you want to add a comment?</span>
                        <asp:TextBox runat="server" ID="txtComment" TextMode="MultiLine" Rows="3" Width="195">
                        </asp:TextBox>
                        <br />
                        <br />
                        <asp:ImageButton runat="server" ID="lnkAddComment" ImageUrl="~/App_Themes/123reg/Images/submit-rating.png"
                            OnClick="lnkAddComment_Click" OnClientClick="showSuccessMessage();" />
                        <br />
                        <br />
                    </div>
                </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="RadRating1" EventName="Rate" />
                </Triggers>
            </asp:UpdatePanel>

现在,当用户使用RadRating对某些内容进行评级时,会触发Rate事件,从而导致回发。

在Rate事件的处理程序上,我执行以下操作:

    protected void RadRating1_Rate(object sender, EventArgs e)
    {
        divAddMessage.Visible = true;
    }

同样的代码正好在两页上。在一个页面上,它更新了divAddMessage,它变得可见,但在另一个页面中,它不可见。即使当它再次回发时,我将其设置为在该页上可见,即使在上面的处理程序中将visible属性设置为true后,该属性仍然为false。

我只在aspx文件中将visibili设置为false,在上面的处理程序中将其设置为true。

事实证明,我在javascript控制台中得到了一个错误:

Sys.InvalidOperationException: Sys.InvalidOperationException: Could not find UpdatePanel with ID 'ctl00_mainContentPlaceHolder_updatePanel'. If it is being updated dynamically then it must be inside another UpdatePanel.

我在多视图中有另一个更新面板。但是,由于活动视图不是回发时具有更新面板的视图,因此更新面板不会被渲染。

Asp.Net更新面板未更新

检查divAddMessage的父/容器元素。他们的能见度设置为假了吗。如果是这样,那么子元素将始终是Visible=false,即使您已将其显式设置为true。这让我过去很生气。

只是一个想法

我有一个自定义控件,并在aspx文件中的声明中将Visible属性设置为false,这将覆盖控件本身中任何子元素的可见性。