用户控件</asp:updatepanel>中的<asp:updatepanel>

时间:2013-08-16 08:52:51

标签: asp.net updatepanel

我在用户控件中使用asp:UpdatePanel。 此用户控件包含在“.aspx”页面中。 它的注册和使用如下:

<%@ Register Src="~/Forms/TestPage.ascx" TagPrefix="ig" TagName="UserControl1" %>

    <asp:Panel ID="ucTestUserCntrl" Visible="false" runat="server">
       <ig:UserControl1 ID="UserControl1" runat="server" />
    </asp:Panel>

<!-- user control code in a diferent page '.ascx' file
-->
<%@ Control Language="C#" Debug="true" CodeFile="TestUserCntrl.ascx.cs"    Inherits="Test_WebUserControl"
AutoEventWireup="true" ClassName="TestUserControl" %>

<asp:Content ID="Content1" runat="server" ContentPlaceHolderID="MainContent">
    <asp:ScriptManager ID="ScriptManager1" EnablePartialRendering="true" runat="server">
    </asp:ScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:Timer ID="timer1" runat="server" Interval="1000" OnTick="Time_Tick">
            </asp:Timer>
            <asp:Label ID="lblTimeDisplay" Text="00:00:00" runat="server" />
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="timer" EventName="Tick" />
        </Triggers>
    </asp:UpdatePanel>
</asp:Content>

用户控件显示为:

有了这个,我得到的错误是: “内容控件必须是内容页面中的顶级控件或引用母版页的嵌套母版页。”

有关如何解决此错误的任何建议。

1 个答案:

答案 0 :(得分:0)

你必须将该用户控件放在<ContentTemplate></ContentTemplate>中。如果你把它放在外面那么它就会给你一个错误。

<%@ Register Src="~/Forms/TestPage.ascx" TagPrefix="ig" TagName="UserControl1" %>



<!-- user control code in a diferent page '.ascx' file
-->
<%@ Control Language="C#" Debug="true" CodeFile="TestUserCntrl.ascx.cs"    Inherits="Test_WebUserControl"
AutoEventWireup="true" ClassName="TestUserControl" %>

<asp:Content ID="Content1" runat="server" ContentPlaceHolderID="MainContent">
    <asp:ScriptManager ID="ScriptManager1" EnablePartialRendering="true" runat="server">
    </asp:ScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
<asp:Panel ID="ucTestUserCntrl" Visible="false" runat="server">
       <ig:UserControl1 ID="UserControl1" runat="server" />
    </asp:Panel>
            <asp:Timer ID="timer1" runat="server" Interval="1000" OnTick="Time_Tick">
            </asp:Timer>
            <asp:Label ID="lblTimeDisplay" Text="00:00:00" runat="server" />
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="timer" EventName="Tick" />
        </Triggers>
    </asp:UpdatePanel>
</asp:Content>