可以在用户控件的代码后面添加属性,例如:
[PersistenceMode(PersistenceMode.InnerProperty)]
public List<ListItem> Items
{
get;
set;
}
然后您的标记将是:
<my:MyListControl runat="server">
<Items>
<asp:ListItem/>
</Items>
</my:myListControl>
为了使它成为您自己的列表项(我建议您这样做,而不是使用ASP.NET。)您需要创建自己的类。
下面是我使用的服务器控件的一个示例(我删除了很多噪声,因此这只是一个框架):
[ToolboxData("<{0}:Menubar runat=server></{0}:Menubar>")]
[System.ComponentModel.DesignTimeVisible(false)]
public class Menubar : WebControl, IPostBackEventHandler
{
private List<MenuItem> _menuItems = new List<MenuItem>();
[PersistenceMode(PersistenceMode.InnerProperty)]
public List<MenuItem> MenuItems
{
get
{
return _menuItems;
}
}
}
[ToolboxItem(false)]
[ParseChildren(true, "MenuItems")]
public class MenuItem
{
private string _clientClick;
private List<MenuItem> _menuItems = new List<MenuItem>();
[Localizable(true)]
public string Title { get; set; }
public string Href { get; set; }
public string Id { get; set; }
[PersistenceMode(PersistenceMode.InnerDefaultProperty)]
public List<MenuItem> MenuItems
{
get { return _menuItems; }
set { _menuItems = value; }
}
}
现在我可以这样使用:
<my:Menubar runat="server" ID="menuBar">
<MenuItems>
<my:MenuItem Title="Save" Href="javascript:saveItem(this);" />
<my:MenuItem Title="Print" Href="javascript:void(0);">
<MenuItems>
<my:MenuItem Title="Preview" Href=""/>
<my:MenuItem Title="To Pdf" Href="javascript:"/>
</MenuItems>
</my:MenuItem>
</MenuItems>
</my:Menubar>