原文:asp.net模板控件示例

模板控件允许将控件数据与其表示形式相分离,模板化控件不提供用户界面。

编写它则是为了实现一个命名容器以及包含属性和方法可由宿主页访问的类,MSDN是这样解释的。

下面是一个简单的示例:

1:建立一个自定义模板控件  MyTemplateControl.ascx

2:为建立的模板控件定义一个ITemplate类型的属性

3:为 ITemplate 定义一个NamingContainer类

4:应用TemplateContainer至ITemplate类型的属性上 。

5:初始化模板数据,把 模板加至模板容器中。

6:测试模板控件,绑定数据。

示例代码:

MyTemplateControl.ascx

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MyTemplateControl.ascx.cs" Inherits="FrameworkWebStudy.MyTemplateControl" %><asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>

只定义了一个容器。用于包含模板控件数据。

private ITemplate template = null;        [TemplateContainer(typeof(ContentContainer))]        [PersistenceMode(PersistenceMode.InnerProperty)]        public ITemplate ContentTemplate        {            get { return template; }            set { template = value; }        }

模板容器,必须实现INamingContainer接口,这仅只是一个标记接口,

任何实现该接口的控件都创建一个新的命名空间,在这个新的命名空间中,

所有子控件 ID 在应用程序内是唯一的。

public class ContentContainer : Control, INamingContainer    {        private string m_content;        public ContentContainer(string content)        {            m_content = content;        }        public string Content        {            get { return m_content; }        }    }

初始化一些测试数据,添加至控件的Page_Init方法中

void Page_Init() {   if (template != null)   {     string[] content = { "henry", "yunyun", "onlyone", "onely" };     for (int i = ; i < content.GetUpperBound(); i++)      {        ContentContainer container = new ContentContainer(content[i]);        template.InstantiateIn(container);        PlaceHolder1.Controls.Add(container);      }    } }

应用示例:

<form id="form1" runat="server">    <div>        <uc1:MyTemplateControl ID="MyTemplateControl1" runat="server">            <ContentTemplate>                Content:<asp:Label ID="lblContent" runat="server" Text='<%# Container.Content %>'></asp:Label>            </ContentTemplate>        </uc1:MyTemplateControl>    </div></form>

绑定数据:

Page.DataBind();

运行结果:

asp.net模板控件示例的更多相关文章

  1. 浅谈ASP.NET报表控件

    OWC似乎使用者居多,但看见有网友在帖中抱怨OWC在使用时需要许可证书,于是将其排除,我可不想BOSS在看报表时弹出一个“没有许可证书”的窗口. 接着找到了ComponentOne的Web chart ...

  2. (转)浅谈ASP.NET报表控件

    项目中有报表图形化的需求, 于是开始在网上找第三方chart控件.因时间紧迫,大至确定了几个候选:一.Office带的OWC控件:二.ComponentOne:三.Web Chart.本文将讲解ASP ...

  3. ASP.NET自定义控件组件开发 第五章 模板控件开发

    原文:ASP.NET自定义控件组件开发 第五章 模板控件开发 第五章 模板控件开发 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.NET自定义控件组件开发 第一章 第二篇 接 ...

  4. ASP.Net 验证控件 RequiredFieldValidator

    使用 ASP.NET 验证控件可在网页上检查用户输入.有用于各种不同类型验证的控件,例如范围检查或模式匹配验证控件.每个验证控件都引用网页上其他位置的输入控件(服务器控件).当处理用户输入时(例如,当 ...

  5. 浅析五大ASP.NET数据控件

    转自:http://kb.cnblogs.com/page/69207/ 摘要:ASP.NET中有不少的控件,在这当中有一部分是用来处理数据的控件.在这里我们正要讨论的就是ASP.NET数据控件,希望 ...

  6. ASP.NET数据绑定控件简介

    •数据绑定分为数据源和数据绑定控件两部分(①数据绑定控件通过数据源获取和修改数据②数据绑定控件通过数据源隔离数据提供者和数据使用者)数据绑定控件→数据源→数据库•数据源:SqlDataSource(连 ...

  7. [摘]ASP.Net标准控件(TextBox控件)

    TextBox控件 TextBox控件又称文本框控件,为用户提供输入文本的功能. 1.属性 TextBox控件的常用属性及说明如表1所示. 表1 TextBox控件常用属性及说明 属    性 说   ...

  8. asp.net Login控件基本属性及事件说明

    原文:asp.net Login控件基本属性及事件说明 Login系列控件是微软为了简化我们的开发过程,为我们进行常规的安全开发提供块捷途径. Login系列控件包含下列控件: Login 登录控件 ...

  9. FineUIMvc v1.4.0 发布了(ASP.NET MVC控件库)!

    FineUIMvc v1.4.0 已经于 2017-06-30 发布,FineUIMvc 是基于 jQuery 的专业 ASP.NET MVC 控件库,是我们的新产品.由于和 FineUI(专业版)共 ...

随机推荐

  1. Libevent使用样例,从简单到复杂

            转载请注明出处:http://blog.csdn.net/luotuo44/article/details/39670221 本文从简单到复杂.展示怎样使用libevent.网上的很多 ...

  2. xcode6 iOS sdk8.1隐藏系统状态栏

    在代码项目(uzplayer)从iOS6升级到iOS8之后,头发如今视频播放器有.系统状态栏后面的背景: 这样就会导致有的时候按下Donebutton,或者拖滑块没有效果 所以,我们须要想个办法.把这 ...

  3. poj 3265 Problem Solving dp

    这个题目容易让人误以为是贪心就可以解决了,但是细想一下很容易举出反例. dp[i][j]表示解决了i个问题,最后一个月解决的问题数目. #include <iostream> #inclu ...

  4. MySQL 触发器结构及三个案例demo

    --你必须拥有相当大的权限才能创建触发器(CREATE TRIGGER),如果你已经是Root用户,那么就足够了.这跟SQL的标准有所不同. CREATE TRIGGER语法 CREATE TRIGG ...

  5. css中padding中样式的顺序含义

    4种可能的情况.举例说明: padding:10px; 四个内边距都是10px padding:5px 10px; 上下5px 左右10px padding:5px 10px 15px; 上5px 右 ...

  6. SSH是什么?Linux如何修改SSH端口号?

    通过SSH连接可以远程管理Linux等设备,默认linuxssh端口是22端口,如何修改SSH默认端口,如何增加SSH端口呢?,下面小编给大家演示一下   工具/原料 Xshell   putty 等 ...

  7. POJ 1276  Cash Machine(多重背包)

    Cash Machine Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 24132 Accepted: 8446 Descrip ...

  8. Java重命名文件

    File file = new File("D:\\aa\a.txt");     file.renameTo(new File("D:\\aa\\b.txt" ...

  9. MVC区域 vs2013 mvc 搭建基架项

    http://www.it165.net/pro/html/201404/12822.html

  10. Java容器的概要

    [Java流输入/输出原理] 在Jaav程序.对于输入数据/输出操作"流"(stream)时尚:J2SDK它提供了多种 各种各样的"流"类,用于获得不同类型的数 ...