“ascx”用户可以控制内容吗?

时间:2012-06-19 16:48:28

标签: asp.net .net-4.0 asp.net-4.0

我正在尝试创建一个可以像面板一样包装内容的ascx控件。我正在做类似的事情 -

<%@ Register TagPrefix="FOO" TagName="Section" Src="CollapsibleSection.ascx" %>
    <Foo:Section runat="server">
        [ Section of asp.net webforms page ]
    </Foo:Section>

已经有一段时间了,因为我已经完成了网络表单并且不记得是否可以这样做?虽然我可以编写一个完全自定义的控件,但如果可能的话,我的应用程序有很多优点。

2 个答案:

答案 0 :(得分:6)

您需要使用TemplateContainerAttribute修饰用户控件,并从INamingContainer继承。

答案 1 :(得分:3)

这被称为模板控制。

这是一个简单的教程,解释了如何在C#和VB.Net中完成:How to: Create Templated ASP.NET User Controls

引自MSDN(上面的链接):

  
      
  1. 在.ascx文件中,添加要在其中显示模板的ASP.NET PlaceHolder控件。
  2.   
  3. 在用户控件的代码中,实现ITemplate类型的属性。
  4.   
  5. 定义一个服务器控件类,该类实现INamingContainer接口作为容器,在该容器中创建一个实例   模板。这称为模板的命名容器。
  6.   
  7. 将TemplateContainerAttribute应用于实现ITemplate的属性并传递模板命名的类型   container作为属性构造函数的参数。
  8.   
  9. 在控件的Init方法中,重复以下步骤一次或多次:   
        
    • 创建命名容器类的实例。
    •   
    • 在命名容器中创建模板的实例。
    •   
    • 将命名容器实例添加到PlaceHolder服务器控件的Controls属性中。
    •   
  10.