模板化的ASP.NET用户控件

时间:2008-10-09 02:04:43

标签: asp.net controls

我正在尝试创建一个用户控件,允许用户进行如下操作:

  <uc1:MyControl id="controlThing" runat="server">

    <uc1:BoundColumn id="column1" Column="Name" runat="server" />
    <uc1:CheckBoxBoundColumn id="column2" Column="Selector" runat="server" />
    <uc1:BoundColumn id="column3" Column="Description" runat="server" />

     ...etc 

  </uc1:MyControl>

除了你可以拥有许多任何类型的事实之外,我只允许某些控件。我可以在XSD中看到这一点,但我对ASP.NET并不完全确定。

我的ASP.NET伏都教现在正在画一个空白..有什么想法吗?

3 个答案:

答案 0 :(得分:2)

PersistenceMode.InnerProperty就是你想要的..以下是MSDN docs.做这样的事情会得到你想要的东西:

[PersistenceMode(PersistenceMode.InnerProperty)]
public ListItem Items {
   get; set;
}

然后你就可以像这样使用它了:

<cc1:MyControl runat="server">
   <Items>
       <asp:ListItem Text="foo" />
   </Items>
</cc1:MyControl>

您也可以创建自己的自定义类。

答案 1 :(得分:0)

您是否可以覆盖现有的控件,例如ListView或GridView?这是你最简单的选择。

但要创建自己的自定义模板化控件,您需要使用ITemplate。

我还没有做过一个,但快速google返回了这个:http://www.developerfusion.com/article/4410/in-depth-aspnet-using-adonet/2/它看起来不错。

我有一本书“开发Microsoft ASP.NET服务器控件和组件”,但它还没有深入阅读(http://www.amazon.com/exec/obidos/ASIN/0735615829/nikhilkothari-20

答案 2 :(得分:0)

我认为我最关心的部分是能够在我的用户控件中模拟任意数量的给定用户控件。

<mycontrol id="control1" runat="server">
    <templateitem id="bleh1" runat="server" />
    <templateitem id="bleh2" runat="server" />
    <templateitem id="bleh3" runat="server" />
     ..etc
</mycontrol>