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

模板化ASP。NET用户控件

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

    我试图创建一个用户控件,允许用户制作以下内容:

      <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。网。

    我的ASP。NET巫毒教现在一片空白。有什么想法吗?

    3 回复  |  直到 15 年前
        1
  •  2
  •   sontek    17 年前

    持久模式。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    17 年前

    您是否可以重写现有的控件,如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    17 年前

    我想我关心的最困难的部分是能够在我的用户控件内为任意数量的给定用户控件集设置模板。

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