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

简介: 原文:ASP.NET自定义控件组件开发 第五章 模板控件开发                                                                                        第五章 模板控件开发  系列文章链接:ASP.
原文: ASP.NET自定义控件组件开发 第五章 模板控件开发

                                        

                                               第五章 模板控件开发

 

系列文章链接:

ASP.NET自定义控件组件开发 第一章 待续

ASP.NET自定义控件组件开发 第一章 第二篇 接着待续

ASP.NET自定义控件组件开发 第一章 第三篇

ASP.NET自定义控件组件开发 第二章 继承WebControl的自定义控件

ASP.NET自定义控件组件开发 第三章 为控件添加事件 前篇

ASP.NET自定义控件组件开发 第三章 为控件添加事件 后篇

ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl

ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl 后篇 --事件冒泡

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

ASP.NET2.0自定义控件组件开发 第六章 深入讲解控件的属性

ASP.NET2.0组件控件开发视频 初体验

 

     大家好,我们今天来开发一个模板控件。

     

     其实开发一个模板控件比开发一个组合控件更加简单,所以这章不难。

 

     开发一个模板控件一般都继承CompositeControl,因为继承这个基类后,我们就省却了很多的麻烦。所以本章我们开

 

发的模板控件也继承于CompositeControl。大家应该还记得我们上章开发那个登录Login控件吧,如下:

     

 

          以上就是我们之前开发的登录控件,现在我们来改造它。我们的现在的这个登录控件的输入用户名和密码的控件是

 

TextBox,我们有时候可能想把TextBox 换成DropdownList,或者其他的控件。也就说,我们想定制这个登录的控件。那

 

么,我们就要模板了。

 

     首先来看看我们本章实现控件的最后效果:

 

 

 

 

     

 

 

          大家看见没,这样我们就可以定制这个控件了。好了,我们来实现吧。

 

     

          首先,我们让我们的模板控件继承上章的那个组合的Login控件:

 

 

Code

 

 

          然后,我们就声明我们的模板:

 

 

Code

 

               正如前面所说的,我们只是想定制两个输入信息的模板,大家可以根据需要,声明更多的模板。如,大家还可以

 

把显示的用户名的那些Label换成模板定制。

 

               其实编写模板控件比编写一个组合控件更加的简单。大家稍后就可以体会到了。

          

               好了,声明完了模板之后,我们的控件写了一大半了,还差一点。大家想想是什么???

 

          

               对了,就是应用这些模板了。如下:

 

              

Code

 

                    我想,大家对这个方法不陌生。因为我们之前的组合控件也是重写了这个方法。到这里,就写完了。

          

                    大家可能还有疑问,为什么这样重写 CreateChildControls()方法后,就会达到我们的效果?

 

                    下面,我就来将这个方法和之前的那个组合控件的 CreateChildControls()方法比较一下,也顺便讲下

 

模板的内幕。

 

          先看组合控件的 CreateChildControls()方法,见下:

              

Code

 

                         1.首先,在之前的组合控件中,我们是把那个TextBox,Label硬编码到了生成和初始化控件的方法

 

CreateChildControls()中。而在模板控件中,我们没有这样做,我们只是简单的调用了模板的一个方法:

 

InstantiateIn()。实际上,这个方法是个晚绑定。

 

                    为什么是晚绑定?先来看看下面:

 

                         

 

          

          假设我们想用个下拉框来输入用户名,我们肯定要设计下拉框的属性,如 name,id,等等,当我们设置好

 

后,就形如这样了:

 

 

 

Code

 

          其实这样和在 CreateChildControls()中声明是一样的,形如:

 

          

Code

 

                    其实模板控件的方法InstantiateIn()就是将之前的那个<ASp:dropdownlist....>代码转换为

 

 

DropDownList mylist=new DropDownList()...

 

                    不知道大家清楚,说到底就是个晚绑定!!!

 

                    到这里,模板控件完了,大家编译后,就后看到下面的控件:

     

               

 

                    然后,我们就在html代码开发声明:如下:

                    

 

Code

 

               很多时候,我们不喜欢这样,因为我们更加喜欢图形化的设置,如下:

          

 

               这样更加友好些。其实这也不难,只要加个设计器就可以了。

 

               设计器是个类。在ASP.NET有很多的设计器,如ControlDesigner,CompositeControlDesigner.等等。

 

               我们的设计器的一般都继承已有的设计器类。在这里我不多讲,大家需要的话,我专们用一章来讲。

          

               

Code

 

               然后在这样:

               

Code

 

 

          一切就OK了,写的有些催促,大家有问题我一定回复。

 

          完整代码如下:

          

          

Code

 

.

 

               

          

目录
相关文章
|
开发框架 JavaScript 前端开发
震撼!破解 ASP.NET 服务器控件 Button 执行顺序之谜,颠覆你的开发认知!
【8月更文挑战第16天】在ASP.NET开发中,通过Button控件实现先执行JavaScript再触后台处理的需求十分常见。例如,在用户点击按钮前需前端验证或提示,确保操作无误后再传递数据至后台深度处理。此过程可通过设置Button的`OnClientClick`属性调用自定义JavaScript函数完成验证;若验证通过,则继续触发后台事件。此外,结合jQuery也能达到相同效果,利用`__doPostBack`手动触发服务器端事件。这种方式增强了应用的交互性和用户体验。
129 8
|
12月前
|
C#
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
本文讨论了在基于.NET 6和.NET Framework的WinForms项目中添加图表控件的不同方法。由于.NET 6的WinForms项目默认不包含Chart控件,可以通过NuGet包管理器安装如ScottPlot等图表插件。而对于基于.NET Framework的WinForms项目,Chart控件是默认存在的,也可以通过NuGet安装额外的图表插件,例如LiveCharts。文中提供了通过NuGet添加图表控件的步骤和截图说明。
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
|
11月前
|
开发者 Windows
.NET 开源扁平化、美观的 C/S 控件库
【10月更文挑战第23天】介绍了三款适用于 .NET 平台的开源扁平化、美观的 C/S 控件库:MaterialSkin 采用 Google Material Design 风格,适合现代感界面;Krypton Toolkit 提供丰富控件,界面易于定制;Fluent Ribbon Control Suite 模仿 Office 界面,适合复杂功能应用。每款控件库均附有示例代码及 GitHub 链接。
451 0
|
11月前
|
C# Android开发 iOS开发
一组.NET MAUI绘制的开源控件 - AlohaKit
一组.NET MAUI绘制的开源控件 - AlohaKit
203 0
|
开发框架 搜索推荐 前端开发
【.NET全栈】ASP.NET开发Web应用——Web部件技术
【.NET全栈】ASP.NET开发Web应用——Web部件技术
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
195 7
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
375 0
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
213 0
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
160 0