【问题标题】:Templated ASP.NET user control模板化 ASP.NET 用户控件
【发布时间】:2008-10-09 02:04:42
【问题描述】:

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

  <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 voodoo 现在正在画一个空白。有什么想法吗?

【问题讨论】:

    标签: asp.net controls


    【解决方案1】:

    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】:

      您是否可以覆盖现有的控件,例如 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】:

        我想我关心的最困难的部分是能够在我的用户控件中对任意数量的给定用户控件集进行模板化。

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

        【讨论】:

          猜你喜欢
          • 2011-05-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-23
          • 2011-10-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多