c# - Asp .Net 更新面板未更新

标签 c# asp.net asp.net-ajax

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

它看起来是这样的:

                     <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;
    }

相同的代码在 2 页上完全相同。在一个页面上,它更新 divAddMessage 并且它变得可见,但在另一页面上它不变得可见。即使我将其设置为在该页面上可见,当它再次回发时,Visible 属性仍然为 false,即使在上面的处理程序中将其设置为 true 后也是如此。

我只在 aspx 文件中将 visibily 设置为 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.

我在多 View 中有另一个更新面板。但由于事件 View 不是回发时包含更新面板的 View ,因此不会呈现更新面板。

最佳答案

检查 divAddMessage 的父/容器元素。他们的可见性是否设置为 false?如果是这样,那么即使您已将其显式设置为 true,子元素也将始终为 Visible=false。这在过去让我发疯。

只是一个想法

关于c# - Asp .Net 更新面板未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17424484/

相关文章:

c# - 带有部分页面的客户端的 Outputcache 属性

c# - 我的 cookie 测试不起作用

c# - T4 模板调试器在包含多个 TT 文件时显示不正确的行

asp.net - 将 MIME 多部分内容发布到 Web Api 2

javascript - 在运行时使用 AJAX 传递 bool 模型属性

c# - 路径可视化

c# - 带单引号的 SQL 查询

asp.net - 错误 : "Fill: SelectCommand.Connection property has not been initialized."

javascript - 如何将模型从 View 传递到 Controller ,将项目添加到列表,传回 View

asp.net-mvc-3 - 使用asp.net mvc和jquery创建google suggest效果