从父控件中删除所有子控件时出错

时间:2010-08-19 12:31:54

标签: c# asp.net parent-child

我有下一个aspx页面:

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.Master" AutoEventWireup="true"
    CodeBehind="newsEditor.aspx.cs" Inherits="ExpertSiteV2.newsEditor" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
<%@ Register Assembly="ExpertSiteV2" Namespace="ExpertSiteV2" TagPrefix="custom" %>
<asp:Content ID="Content3" ContentPlaceHolderID="Main" runat="server">
    <asp:Panel ID="Panel1" runat="server">
        <asp:Panel ID="Panel2" runat="server" Width="660" Style="margin-bottom: 10px;">
            <asp:Label ID="Label1" runat="server" Text="Label" Width="150">Заголовок новости</asp:Label>
            <asp:TextBox ID="newsTitle" runat="server" Width="500" Style="float: right;"></asp:TextBox>
        </asp:Panel>
        <custom:CustomEditor ID="Editor3" runat="server" Height="300" Width="660" BackColor="White" />
        <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
        </asp:ToolkitScriptManager>
        <asp:Panel ID="Panel3" runat="server" Style="margin-top: 5px;" CssClass="buttonPanel">
            <asp:ImageButton ID="SaveImageButton1" runat="server" ImageUrl="img/save_32.png"
                ToolTip="Сохранить новость" />
            <asp:LinkButton ID="SaveLinkButton1" runat="server" ToolTip="Сохранить новость">Сохранить</asp:LinkButton>
            <asp:ImageButton ID="ImageButton2" runat="server" CausesValidation="False" ImageUrl="img/block_32.png"
                PostBackUrl="news.aspx" ToolTip="Вернуться к странице новостей" />
            <asp:LinkButton ID="LinkButton2" runat="server" ToolTip="Вернуться к странице новостей"
                CausesValidation="False" PostBackUrl="news.aspx">Отмена</asp:LinkButton>
        </asp:Panel>
        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Заголовок должен быть заполнен!"
            ControlToValidate="newsTitle" Display="Dynamic">
        </asp:RequiredFieldValidator>
    </asp:Panel>
</asp:Content>

我想删除Panel1的所有内容。我写了代码:

Panel1.Controls.Clear();

但它不起作用,我收到了消息:

  

页面不能为空。请确保   正在执行此操作   在ASP.NET请求的上下文中。   描述:未处理的异常   在执行期间发生   当前的网络请求。请查看   堆栈跟踪以获取更多信息   错误及其来源   代码。

     

异常详细信息:   System.InvalidOperationException:Page   不能为空。请确保   此操作正在执行中   ASP.NET请求的上下文。

     

来源错误:

     

生成了未处理的异常   在执行当前   网络请求。有关的信息   异常的起源和位置   可以使用例外来识别   堆栈跟踪下面。

     

堆栈追踪:

     

[InvalidOperationException:Page   不能为空。请确保   此操作正在执行中   ASP.NET请求的上下文。]
  System.Web.UI.ScriptManager.get_IPage()   +373832 System.Web.UI.ScriptManager.OnPagePreRenderComplete(Object   发件人,EventArgs e)+54
  System.Web.UI.Page.OnPreRenderComplete(EventArgs的   e)+8698462
  System.Web.UI.Page.ProcessRequestMain(布尔   includeStagesBeforeAsyncPoint,Boolean   includeStagesAfterAsyncPoint)+1029

     

块引用

怎么了?我该怎么做呢?

2 个答案:

答案 0 :(得分:0)

难道你不能只隐藏面板吗? Panel1.Visible = false。为什么你要删除控件。

啊哈,我现在得到的问题是: 查看此项目http://www.codeproject.com/KB/user-controls/DynamicUC.aspx

答案 1 :(得分:0)

好的,我写过这样的话:

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.Master" AutoEventWireup="true"
CodeBehind="newsEditor.aspx.cs" Inherits="ExpertSiteV2.newsEditor" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
<%@ Register Assembly="ExpertSiteV2" Namespace="ExpertSiteV2" TagPrefix="custom" %>
<asp:Content ID="Content3" ContentPlaceHolderID="Main" runat="server">
    <asp:Panel ID="Panel4" runat="server">
        <asp:Panel ID="Panel1" runat="server">
            <asp:Panel ID="Panel2" runat="server" Width="660" Style="margin-bottom: 10px;">
                <asp:Label ID="Label1" runat="server" Text="Label" Width="150">Заголовок новости</asp:Label>
                <asp:TextBox ID="newsTitle" runat="server" Width="500" Style="float: right;"></asp:TextBox>
            </asp:Panel>
            <custom:CustomEditor ID="Editor3" runat="server" Height="300" Width="660" BackColor="White" />
            <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
            </asp:ToolkitScriptManager>
            <asp:Panel ID="Panel3" runat="server" Style="margin-top: 5px;" CssClass="buttonPanel">
                <asp:ImageButton ID="SaveImageButton1" runat="server" ImageUrl="img/save_32.png"
                    ToolTip="Сохранить новость" />
                <asp:LinkButton ID="SaveLinkButton1" runat="server" ToolTip="Сохранить новость">Сохранить</asp:LinkButton>
                <asp:ImageButton ID="ImageButton2" runat="server" CausesValidation="False" ImageUrl="img/block_32.png"
                    PostBackUrl="news.aspx" ToolTip="Вернуться к странице новостей" />
                <asp:LinkButton ID="LinkButton2" runat="server" ToolTip="Вернуться к странице новостей"
                    CausesValidation="False" PostBackUrl="news.aspx">Отмена</asp:LinkButton>
            </asp:Panel>
            <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Заголовок должен быть заполнен!"
                ControlToValidate="newsTitle" Display="Dynamic">
            </asp:RequiredFieldValidator>
        </asp:Panel>
    </asp:Panel>
</asp:Content>

这是另外一个包含所有内容的面板。我写过:

Panel4.Controls.Clear();

工作正常。 我仍然不知道为什么Panel1不想删除子控件。如果有人知道只是写下答案。