原文: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. C# Dictionary.Add(key,value) 与 Dictionary[key]=value的区别

    1. MSDN上的描述. http://msdn.microsoft.com/zh-cn/library/9tee9ht2(v=VS.85).aspx 通过设置 Dictionary 中不存在的键值, ...

  2. 【c语言】模拟库函数strstr

    // 模拟库函数strstr #include <stdio.h> #include <assert.h> const char* my_strstr(const char * ...

  3. veridata实验举例(6)验证agent启动先后顺序是否对捕获update操作有影响

    veridata实验举例(6)验证agent启动先后顺序是否对捕获update操作有影响 续接veridata实验系列  上篇:"veridata实验举例(5)改动主键上的列值.update ...

  4. 22个值得收藏的android开源码-UI篇

    本文介绍了android开发人员中比較热门的开源码,这些代码绝大多数能够直接应用到项目中. FileBrowserView 一个强大的文件选择控件.界面比較美丽,使用也非常easy. 特点:能够自己定 ...

  5. 微通道对接ERP、CRM、OA、HR、SCM、PLM和其他管理系统解决方案

    公司现有ERP.CRM.OA.HR.SCM.PLM等管理系统的对接微信公共平台服务 方法1:开放接口 企业开放现有系统数据接口给第三方,或由第三方开发数据接口对接微信公众平台 方法2:获取数据库 企业 ...

  6. sql大小转换函数

    将字段值转换成大写 UPDATE t SET [name]=UPPER([name]) 将字段值转换成小写 UPDATE t SET [name]=LOWER([name])

  7. Java如何检查List<String> 里是否有想要的字符串?

    List<String> test = new ArrayList<String>(); test.add("a"); test.add("b&q ...

  8. duilib底层机制剖析:窗口类与窗口句柄的关联

    转载请说明原出处.谢谢~~ 看到群里朋友有人讨论WTL中的thunk技术,让我联想到了duilib的类似技术. 这些技术都是为了解决c++封装的窗口类与窗口句柄的关联问题. 这里是三篇关于thunk技 ...

  9. JS验证姓名、邮箱、电话号码

    <SCRIPTtype="text/javascript"> varredflag=0; //姓名验证 functionisName(){ varname=$('#na ...

  10. Oracle ORA-01034,ORA-27101,ORA-00600

    本机IP地址:192.168.1.163 [oracle@rtest ~]$ sqlplus /nolog SQL*Plus: Release 10.2.0.2.0 - Production on S ...