我正在尝试做一些谷歌无法回答的事情。我正在尝试创建一个asp.net用户控件,当我将内容放入其开放关闭标记中时,它将包含它,以便我仍然能够通过父级的ID访问其内容。这是我想要实现的示例。
用户控件:
包含控件的父页面:
这样,我就能在Parent.cs文件中做到:
我知道我们可以通过ITemplate接口实现类似的功能,示例在这里:http://msdn.microsoft.com/en-us/library/36574bf6.aspx 这将看起来像这样:
但是如果我这样做,我将无法访问litText的属性,唯一能够访问它的方式是通过FindControl,而我想避免使用它。是否有人对此有提示,我是否可以通过其他方式实现我的目标?谢谢。
用户控件:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ctrlGENE_CollapsiblePanel.ascx.cs"
Inherits="Controls_GenericsControls_ctrlGENE_CollapsiblePanel" %>
<asp:Panel ID="pnlHeader" CssClass="SnapPanelHeader" runat="server">
<h3>
<asp:Literal ID="litTitle" Text='<%# Text %>' runat="server" />
</h3>
<div class="SnapPanelHeader-img">
<img id="imgOpenClose" src="/images/application/close.jpg" alt="" />
</div>
</asp:Panel>
<asp:PlaceHolder runat="server" ID="pnlContent">
// **HERE I WANT TO INCLUDE THE INSIDE MARKUP**
</asp:PlaceHolder>
<act:CollapsiblePanelExtender runat="server" TargetControlID="pnlContent" ImageControlID="imgOpenClose"
ExpandControlID="imgOpenClose" CollapseControlID="imgOpenClose" CollapsedImage="/images/application/open.jpg"
ExpandedImage="/images/application/close.jpg" CollapsedSize="0" TextLabelID="litTitle">
</act:CollapsiblePanelExtender>
包含控件的父页面:
<uc:MyUserControl ID="clpTest" runat="server">
<asp:Literal ID="litText" runat="server" />
</uc:MyUserControl>
这样,我就能在Parent.cs文件中做到:
litText.Text = "Anything";
我知道我们可以通过ITemplate接口实现类似的功能,示例在这里:http://msdn.microsoft.com/en-us/library/36574bf6.aspx 这将看起来像这样:
<uc:MyUserControl ID="clpTest" runat="server">
<ItemTemplate>
<asp:Literal ID="litText" runat="server" />
</ItemTemplate>
</uc:MyUserControl>
但是如果我这样做,我将无法访问litText的属性,唯一能够访问它的方式是通过FindControl,而我想避免使用它。是否有人对此有提示,我是否可以通过其他方式实现我的目标?谢谢。