创建模板化的A.NET用户控件_.NET概论及软件使用_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

创建模板化的A.NET用户控件

作者:黑客防线网安ASP维护基地 来源:黑客防线网安ASP维护基地 浏览次数:0

本篇关键词:控件用户模板创建
黑客防线网安网讯:   可以创建实现模板的用户控件,这是 ASP.NET 的一项功能,它允许将控件数据与其表示形式相分离。模板化控件不提供用户界面。编写它则是为了实现一个命名容器以及包含属性和方法可由宿主页...

   可以创建实现模板的用户控件这是 ASP.NET 的一项功能它允许将控件数据与其表示形式相分离模板化控件不提供用户界面编写它则是为了实现一个命名容器以及包含属性和方法可由宿主页访问的类。

用户控件的用户界面由页面开发人员在设计时提供。开发人员创建由用户控件定义的类型模板,然后可以向模板添加控件和标记。

创建模板用户控件在 .ascx 文件中,添加要在其中显示模板的 ASP.NET PlaceHolder 控件。

在用户控件的代码中,实现 ITemplate 类型的属性。

将实现 INamingContainer 接口的服务器控件类定义为要在其中创建模板实例的容器。此容器叫做模板的命名容器。

注意

此控件实质上成了用户控件的嵌套类,但这不是必需的。

将 TemplateContainerAttribute 应用于实现 ITemplate 的属性 (property),并将模板命名容器的类型作为参数传递给属性 (attribute) 的构造函数。

在控件的 Init 方法中,将以下步骤重复一次或多次:

创建命名容器类的一个实例。

在命名容器中创建该模板的一个实例。

将命名容器实例添加到 PlaceHolder 服务器控件的 Controls 属性。

注意

从使用用户控件的页面的角度来看,模板化用户控件的语法与自定义模板化控件的语法相同。

示例

下面的示例演示一个模板化用户控件和一个包含该控件的页面。该用户控件创建一个可在宿主页上声明为 <MessageTemplate> 的模板。该模板控件还公开两个可由宿主页在模板内访问的属性:Index 和 Message。

第一个示例显示模板化用户控件。第二个示例显示包含该用户控件的页面。

<%@ Control language="C#" ClassName="TemplatedUC" %>

<script runat=server>

private ITemplate messageTemplate = null;

[ TemplateContainer(typeof(MessageContainer)) ]

public ITemplate MessageTemplate {

get

{

return messageTemplate;

}

set

{

messageTemplate = value;

}

}

void Page_Init() {

if (messageTemplate != null) {

String[] fruits = {"apple", "orange", "banana", "pineapple" };

for (int i=0; i<4; i++)

{

MessageContainer container = new MessageContainer(i, fruits[i]);

messageTemplate.InstantiateIn(container);

PlaceHolder1.Controls.Add(container);

}

}

}

public class MessageContainer: Control, INamingContainer {

private int m_index;

private String m_message;

internal MessageContainer(int index, String message)

{

m_index = index;

m_message = message;

}

public int Index {

get

{

return m_index;

}

}

public String Message

{

get

{

return m_message;

}

}

}

</script>

<asp:placeholder runat=server id="PlaceHolder1" />

<%@ Page Language="C#" %>

<%@ Register TagPrefix="uc" tagname="TemplateTest"

Src="TemplatedUC.ascx" %>

<html>

<script runat=server>

protected void Page_Load()

{

DataBind();

}

</script>

<head>

<title>Templated User Control Test</title>

</head>

<body>

<h1>Testing Templated User Control</h1>

<form id="Form1" runat=server>

<uc:TemplateTest runat=server>

<MessageTemplate>

Index: <asp:Label runat="server" ID="Label1"

Text='<%# Container.Index %>' />

<br />

Message: <asp:Label runat="server" ID="Label2"

Text='<%# Container.Message %>' />

<hr />

</MessageTemplate>

</uc:TemplateTest>

</form>

</body>

</html>

 

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-14348-1.html
网站维护教程更新时间:2012-03-30 05:46:02  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer