代码之家  ›  专栏  ›  技术社区  ›  nyxtom

模板化ASP.NET用户控件

  •  0
  • nyxtom  · 技术社区  · 16 年前

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

      <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 回复  |  直到 14 年前
        1
  •  2
  •   sontek    16 年前

    PersistenceMode.InnerProperty就是您想要的。这里是 MSDN docs. 这样做可以得到你想要的:

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

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

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

    您也可以创建自己的自定义类来在其中使用。

        2
  •  0
  •   Aaron Powell    16 年前

    是否可以重写现有控件(如ListView或GridView)?这是你最简单的选择。

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

    我没做过,但一个快速的谷歌返回了这个: 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 )

        3
  •  0
  •   nyxtom    16 年前

    我想我所关心的最困难的部分是能够在我的用户控件内模板化任何数量的给定用户控件。

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