我在用户控件中使用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>
用户控件显示为:
有了这个,我得到的错误是: “内容控件必须是内容页面中的顶级控件或引用母版页的嵌套母版页。”
有关如何解决此错误的任何建议。
答案 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>