风影ASP.NET基础教学 6用户控件
在Web系统开发中,经常会有一些功能模块在很多的地方重复出现,例如新闻管理系统中的用户登陆/注册、推荐新闻、热点新闻和页面上的一些固定栏目等。为了提高代码的重用性,减少系统的开发与维护成本,一般会把这些重用性,减少系统开发和维护的成本,一般会把这些重用的功能模块写成单独的通用模块,以供需要的地方引用。
在ASPNET中,要实现这样的通用模块,可以将这些功能模块封装成“用户控件”,然后再需要的页面中引用这些“用户控件”,从而达到了“一次封装,N次复用”的效果。本文将介绍ASPNET用户控件的相关知识,并重点讲解用户控件的封装方法与编程技巧。
用户控件详解
ASPNET WEB控件文件(.ascx)与ASPNET WEB页面文件(.aspx)相似。与WEB页面文件一张,用户控件由含有页面标签的用户界面文件(.ascx),页面脚本文件JS和后台代码CS文件组成。
用户控件可以包含所有web内容,比如静态的HTML内容和ASP.NET控件。同时它还接受和Page对象一样的事件(Load和PreRender)并通过属性暴露一组相同的ASPNET固有的对象 Application、Session、Request、Response。因此可以采用和ASPNET web页面相似的方式来创建用户控件,然后向其中添加所需的标记和子控件。
通常,用户控件和页面存在着以下的区别
1
用户控件的文件扩展名为ascx,而页面为aspx。其中用户控件是从System.Web.UI.UserControl类继承而来的,而Web页面则是从System.Web.UI.Page类继承而来的。
尽管如此,他们却有着许多相同相似的地方,System.Web.UI.UserControl 和 System.Web.UI.Page都是继承自同一个 System.Web.UI.TemplateControl类。因此,System.Web.UI.TemplateControl类的属性和方法,事件都是共有的.
2
用户控件没有Page指令,而换成了@Control指令,该指令对配置以及其他属性进行定义,后面将详细阐述@Control指令
3
用户控件不能作为独立文件运行,你必须像处理其他任何控件一样,将它们添加到ASPNET WEB页面运行
4
用户控件没有<html> <head> <body> <form>。因此除了这些元素以外,可以在用户控件里使用和页面里一样的任何内容。
@Control指令
@Control指令类似于@Page指令,但@Control指令时在建立ASP.NET用户控件时使用的。@Control指令允许定义用户控件要继承的属性,这些属性值会在解析和编译页面的时候赋予用户控件。
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="ASPNETTeach4.WebUserControl1" %>
@Control指令可用属性比@Page指令少,他的常用属性有
AutoEnentWireup | 指示控件的事件是否自动匹配。如果事件自动匹配则设置为true |
ClassName | 用于指定需要在请求时进行动态编译的控件的类名。并且可以包括一个类的完整限定名。 |
CodeBehind | 指定与该用户控件关联的后置代码文件路径 |
EnableTheming | 是否使用主题。 |
EnableViewState | 是否启用状态视图 |
Inherits | 后置代码对应的处理的类名 |
Language | 该用户控件使用的语言 |
创建简单的用户控件
上面阐述了用户控件的概念和@Control指令,下面我们来看看如何创建一个用户控件以及如何在Web页内使用用户控件。
创建一个简单的用户控件
创建成功之后会出现三个文件
你会发现和我们创建Web窗体一样。这里就不在赘述。
我们来看后置代码
除了继承的基类变了以外基本和Web页面一致。
我们在这个用户控件里加一些内容。
用户控件前端代码
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="ASPNETTeach4.WebUserControl1" %>
<table style="width: 100%;">
<tr>
<td>
<asp:Calendar ID="Calendar1" runat="server"
BackColor="#FFFFCC"
BorderColor="#0000cc"
BorderStyle="Ridge"
OnSelectionChanged="Calendar1_SelectionChanged"
CellPadding="0"></asp:Calendar> </td>
</tr>
<tr>
<td>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></td>
</tr>
</table>
事件代码
protected void Calendar1_SelectionChanged(object sender, EventArgs e)
{
Label1.Text = "你选择的日期是:" + Calendar1.SelectedDate.ToLongDateString();
}
页面引用代码
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="ASPNETTeach4.WebForm1" %>
<%@ Register Src="~/WebUserControl1.ascx" TagPrefix="uc1" TagName="WebUserControl1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<uc1:WebUserControl1 runat="server" id="WebUserControl1" />
</div>
</form>
</body>
</html>
转载于:https://www.cnblogs.com/feelboy/archive/2012/08/26/2657195.html
风影ASP.NET基础教学 6用户控件相关推荐
- 风影ASP.NET基础教学 7用户控件编程
下面我们使用"网站友情链接"的主要功能就是管理网站的各种友情链接地址,使这些友情链接能够显示在网站各个需要的地方,一般显示在网站的底部.为了实现链接显示,首先需要在项目中创建一个H ...
- 风影ASP.NET基础教学 5 验证控件(二) 扩展自己的验证控件
前文回顾 我们之前提过了5种官方验证控件的方式. 下面我们来讲解编程方式验证和扩展自己的验证控件 以编程的方式验证asp.net控件 默认情况下,在页面回发到服务器时,页面初始化之后(即视图ViewS ...
- 风影ASP.NET基础教学 4 验证控件
前言 无论什么应用软件系统,它最本质的功能和用途就是处理数据.这样,数据的安全性就成为了系统设计里面非常重要的话题,提交一些不安全的数据(如SQL注入.数据类型或者数据范围不合适等)常常会导致系统计算 ...
- ASP.NET 实践:使用用户控件实现 Web 部件的个性化
这个实践示范了如何创建依赖于 Web 部件个性化的 ASP.NET 用户控件,并在 Web 页面中提供用户特定的默认值. ASP.NET Web 部件控件集允许你建立拥有模块化布局的 Web 页面,并 ...
- 在asp.net中为Web用户控件添加属性和事件
在90年代初,Microsoft为Web程序员提供的 Active Server Pages(ASP)革命性地改变了Web的编程.它可以利用十分易用的模型在Web服务器上动态生成HTML,并且很容易的 ...
- ASP.NET重用代码技术 - 用户控件技术
作者: 苏红超 使用ASP.NET中的代码绑定技术来使得代码重用变得简单可行.我们发现,利用代码绑定技术我们可以容易的将我们的代码和内容分离开来,利用它可以建立可重用的代码,只是这种技术本身也存在着一 ...
- ASP.NET分页存储过程自定义用户控件
网上有很多分页存储过程,但是基本上都是提供一个单纯的存储过程,没有具体的怎样去实现.最近做一个项目用户的数数据相当大(一百万以上的数据),如果用.NET自带的分页基本上是跑不动了,不是提示超时就是死在 ...
- ASP.NET开发:在用户控件中添加属性
在WEB开发中,可重用的代码我们可以把它写成一个通用模块供需要的地方来引用.本文就是介绍在ASP.NET的web编程时,如何在用户控件中添加属性,实现这种方法:举例说明详解. 在WEB开发中经常有一些 ...
- 风影ASP.NET基础教学 11 FormView
无论功能上还是使用方法上,FormView与DetailsView都非常的类似,FormView控件使你同样可以使用数据源的单个记录.它也用于更新和插入新纪录,并且通常在详细方案中使用,在这些方案中, ...
最新文章
- eclipse怎么设置字体大小非原创
- 计算机二级一年几次湖南省,湖南省计算机二级多少分可以通过
- IOS-网络(GCD)
- Android之Dialog提示Unable to add window -- token is not valid; is your activity running?
- python多进程间通信_python多进程间通信代码实例
- python安装(原系统中已有python2)
- FreeSWITCH的TLS加密
- CVPR最佳作者新作!无监督学习可变形3D对象
- spark视频-Spark on Yarn
- 【sklearn第八讲】广义线性模型
- 大学计算机基础流媒体,大学计算机基础经典课件.ppt
- ubuntu 怎么下载android源代码 2013,简记Ubuntu下载 Android源码(示例代码)
- 怎么做直播APP软件?
- 羽毛球 - 正手高球(杀球、吊球、高远球)
- 深度强化学习(机器之心)
- js实现form的submit请求
- JS学习之路系列总结五行阵(此文犹如武林之中的易筋经,是你驰骋IT界的武功心法,学会JS五大阵法就学会了JS,博主建议先学三才阵)
- 捆绑软件?锁定主页?这4个地方可以下载到绝对纯净的Windows系统
- 杂项 20221108 finrl 的玩法 python技巧 查看版本信息
- b2b、c2c、B2C、B2B2C分别是什么意思?有什么区别?