我们如何创建由嵌套标签组成的UserControl,如下所示:
<uc:MyPanel>
<header>
title here...
</header>
<content>
content here...
</content>
</uc:MyPanel>
答案 0 :(得分:1)
要执行您要查找的内容,您需要创建一个可以插入嵌套标记的自定义服务器控件。这需要很多的工作。
看起来您正在尝试为您的网站创建布局。如果您正在尝试这样做,那么最好使用母版页,并为页眉,页脚,内容等创建内容占位符。
答案 1 :(得分:0)
我猜你要找的是拥有Content Place holder
的母版页。 e.g。
<div class="page">
<div class="header">
<div class="title">
<h1>
My ASP.NET Application
</h1>
</div>
</div>
<div class="main">
<asp:ContentPlaceHolder ID="MainContent" runat="server"/>
</div>
<div class="clear">
</div>
</div>
<div class="footer">
</div>
答案 2 :(得分:0)
我想我明白你在追求自己所追求的是什么,因为我过去一直试图找到一种方法。我有一些复杂的HTML生成一个带标题的框。每次我需要这个盒子时,我都希望能指定嵌套在里面的header / content / whateverelse标签,而不是复制HTML。
我找不到原来的问题,但我记得那里找不到我想要的答案。
最后我相信我被告知要调查Custom Server Controls而不是用户控件。
我希望这会有所帮助
答案 3 :(得分:0)
这是我找到的解决方案,对于人们来说,如何做同样的事情
popup.ascx
<%@ Control Language="C#" AutoEventWireup="true"
CodeBehind="Popup.ascx.cs" Inherits="Dynamic.Popup" %>
<div style="width: 400px; padding: 1px; border: 1px solid #BED6F8;
background-color: #FFFFFF; position: absolute" runat="server" id="panel">
<div style="padding: 1px 1px 2px 5px; height: 18px; border: 1px solid #BED6F8; cursor: move;
background: -moz-linear-gradient(top, white,#BED6F8); background-color: #BED6F8"
runat="server" id="titlePanel">
<asp:Literal ID="ltTitre" runat="server"></asp:Literal>
<div style="position: absolute; right: 3px; top: 3px; z-index: 100; cursor: pointer">
<img src="close.png" alt="fermer" onclick="$find('popUpPanel').hide();" />
</div>
Popup.ascx.cs
[ParseChildren(true)]
public partial class Popup : System.Web.UI.UserControl
{
[TemplateContainer(typeof(MessageContainer))]
[PersistenceMode(PersistenceMode.InnerProperty)]
public ITemplate MessageTemplate { get; set; }
public string Text { get; set; }
protected void Page_Init(object sender, EventArgs e)
{
ltTitre.Text = Text;
if (MessageTemplate != null)
{
var i = new MessageContainer();
MessageTemplate.InstantiateIn(i);
PlaceHolder1.Controls.Add(i);
}
}
public class MessageContainer : Control, INamingContainer{ }
}
使用usercontrols
<uc:Popup ID="p" runat="server" Text="Titre1">
<MessageTemplate>
<asp:LinkButton ID="LinkButton1" runat="server">LinkButton</asp:LinkButton>
Test
</MessageTemplate>
</uc:Popup>