在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用户控件相关推荐

  1. 风影ASP.NET基础教学 7用户控件编程

    下面我们使用"网站友情链接"的主要功能就是管理网站的各种友情链接地址,使这些友情链接能够显示在网站各个需要的地方,一般显示在网站的底部.为了实现链接显示,首先需要在项目中创建一个H ...

  2. 风影ASP.NET基础教学 5 验证控件(二) 扩展自己的验证控件

    前文回顾 我们之前提过了5种官方验证控件的方式. 下面我们来讲解编程方式验证和扩展自己的验证控件 以编程的方式验证asp.net控件 默认情况下,在页面回发到服务器时,页面初始化之后(即视图ViewS ...

  3. 风影ASP.NET基础教学 4 验证控件

    前言 无论什么应用软件系统,它最本质的功能和用途就是处理数据.这样,数据的安全性就成为了系统设计里面非常重要的话题,提交一些不安全的数据(如SQL注入.数据类型或者数据范围不合适等)常常会导致系统计算 ...

  4. ASP.NET 实践:使用用户控件实现 Web 部件的个性化

    这个实践示范了如何创建依赖于 Web 部件个性化的 ASP.NET 用户控件,并在 Web 页面中提供用户特定的默认值. ASP.NET Web 部件控件集允许你建立拥有模块化布局的 Web 页面,并 ...

  5. 在asp.net中为Web用户控件添加属性和事件

    在90年代初,Microsoft为Web程序员提供的 Active Server Pages(ASP)革命性地改变了Web的编程.它可以利用十分易用的模型在Web服务器上动态生成HTML,并且很容易的 ...

  6. ASP.NET重用代码技术 - 用户控件技术

    作者: 苏红超 使用ASP.NET中的代码绑定技术来使得代码重用变得简单可行.我们发现,利用代码绑定技术我们可以容易的将我们的代码和内容分离开来,利用它可以建立可重用的代码,只是这种技术本身也存在着一 ...

  7. ASP.NET分页存储过程自定义用户控件

    网上有很多分页存储过程,但是基本上都是提供一个单纯的存储过程,没有具体的怎样去实现.最近做一个项目用户的数数据相当大(一百万以上的数据),如果用.NET自带的分页基本上是跑不动了,不是提示超时就是死在 ...

  8. ASP.NET开发:在用户控件中添加属性

    在WEB开发中,可重用的代码我们可以把它写成一个通用模块供需要的地方来引用.本文就是介绍在ASP.NET的web编程时,如何在用户控件中添加属性,实现这种方法:举例说明详解. 在WEB开发中经常有一些 ...

  9. 风影ASP.NET基础教学 11 FormView

    无论功能上还是使用方法上,FormView与DetailsView都非常的类似,FormView控件使你同样可以使用数据源的单个记录.它也用于更新和插入新纪录,并且通常在详细方案中使用,在这些方案中, ...

最新文章

  1. eclipse怎么设置字体大小非原创
  2. 计算机二级一年几次湖南省,湖南省计算机二级多少分可以通过
  3. IOS-网络(GCD)
  4. Android之Dialog提示Unable to add window -- token is not valid; is your activity running?
  5. python多进程间通信_python多进程间通信代码实例
  6. python安装(原系统中已有python2)
  7. FreeSWITCH的TLS加密
  8. CVPR最佳作者新作!无监督学习可变形3D对象
  9. spark视频-Spark on Yarn
  10. 【sklearn第八讲】广义线性模型
  11. 大学计算机基础流媒体,大学计算机基础经典课件.ppt
  12. ubuntu 怎么下载android源代码 2013,简记Ubuntu下载 Android源码(示例代码)
  13. 怎么做直播APP软件?
  14. 羽毛球 - 正手高球(杀球、吊球、高远球)
  15. 深度强化学习(机器之心)
  16. js实现form的submit请求
  17. JS学习之路系列总结五行阵(此文犹如武林之中的易筋经,是你驰骋IT界的武功心法,学会JS五大阵法就学会了JS,博主建议先学三才阵)
  18. 捆绑软件?锁定主页?这4个地方可以下载到绝对纯净的Windows系统
  19. 杂项 20221108 finrl 的玩法 python技巧 查看版本信息
  20. b2b、c2c、B2C、B2B2C分别是什么意思?有什么区别?

热门文章

  1. 水仙花数的while方法
  2. 详解adb shell 常用命令
  3. 工作小笔记——使用Cartographer建图和调优
  4. 让人春分日 哈工科教100272.关路灯
  5. 《ClickHouse原理解析与应用实践》读书笔记(2)
  6. xctf之warmup
  7. 世界各国劳动力总数数据集1990-2019年
  8. Android 数字显示带E(科学计数法)
  9. 正反向隔离装置(网闸)
  10. JAVA面向对象的基础知识快速通过---自学笔记(一)