ASP.NET-控件篇
ASP.NET-控件篇
对于ASP.NET的控件,微软进行了封装,根本就是看不到源代码。从而产生了自己编写控件的模式。也产生了很多的第三方控件。对于这些控件,都是实现了微软的方法才可以运行在.NET平台中。下面我们来看看一些简单的控件的编写。
当然首当其冲的就是用户控件,对于用户控件。他的编写可能会很方便。没有那么多的复杂的代码量。对于用户控件后缀名是.ascx,它的编码方式和页面的编码方式其实没什么很大的区别,关键点就是在于他们之间的调用。对于页面调用和控件直接值得的传递,方法的调用,如何能够在本页面中调用控件中的方法。这是很关键的。其实这里大家可能第一就是委托了。通过委托让他们直接有沟通的桥梁。说道这里确实是这样的。对于委托,这里名词,对于初学者是很难理解的。就算理解了字面的意思,也不是很明白代码之间的意思吧!下面我们来开用户控件的代码。
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="WebApplication2.UserControl.WebUserControl1" %>
对于这句代码的各个部分的说明:
首先指明一点就是<%@%>这个标示符,表示对于控件的命名空间的引用,并不是很难理解。Control Language表示编写控件所需要的语言,AutoEventWireup表示是否自动回传到服务器端,默认情况是true,CodeBehind表示控件所定义的后台代码文件名称,Inherits表示指定要继承的CodeBehind类。当然这些都是VS自动回产生的。不用手动编码了。
这是控件的后台页面,可能会很熟悉。当然这就是和页面类很相似了。对于它的实现。只需要从工具箱中拖入所需要的控件,进行排版就可以了。
控件的使用:
当然控件完成后编译生成。用户控件的使用分为两种:直接在页面注册和在配置文件中配置。
想说前者;在页面注册用户控件。
<%@ Register src="UserControl/WebUserControl1.ascx" tagname="WebUserControl1" tagprefix="uc1" %>
对于这句代码就是用户控件需要在使用它的页面进行注册。Src表示控件的相对路径,tagname表示控件的名称,tagprefix表示控件的前缀,这点对于服务器控件都是一样的,想想button就是这样的它的前缀都是asp开头,所以每次使用用户控件都是很不方便都要在每个页面配置,这样式不利于维护的。所以微软就推荐使用第二种了,将注册的代码编写到配置文件中。对于配置文件确实很强大。需要记住的东西也是很多的。
对于配置中的Src表示的是虚拟路径,而在页面中使用的相对路径。这点是要注意的。
还有就是每个控件都会有自己的属性和方法。
对于属性的暴露,用户控件的暴露是很容易的直接在控件的后台代码中公开所需要的属性。
public int Name { get; set; }
public string Text { get; set; }
下面看一张图表
比较 |
用户控件 |
页面 |
后缀名 |
.ascx |
.aspx |
指令 |
@Control |
@Page |
继承 |
System.Web.UI.UserControl |
System.Web.UI.Page |
包含 |
可以包含控件和其他的用户控件,也可以被其他用户控件和页面包含 |
可以包含控件和所有用户控件,但是不可以被其他页面包含 |
直接访问 |
不可以直接访问,必须包含在页面中才可以使用, |
可以 |
标签 |
不能包含<html>,<body>等HTML标签 |
可以包含所有HTML标签 |
编译和运行 |
可独立编译,但是不能单独运行,不可以直接访问 |
可以直接访问 |
特性
设计时的特性:对于这个定义我们不好用语言来形容,其实就是想一个人打上很多的标签一样,用来描述这个人的方方面面,对于描述性的内容我们可以定义成一个类来描述指定的的信息。称之为“特性”;特性也是一种类,所有的特性都是继承自Attribute这个类,所以要想自定义特性就要继承自Attribute,自定义一些方法,下面我们列举几个特性:
特性名称 |
应用位置 |
说明 |
Browsable |
属性、事件 |
指定属性或事件是否应该显示在窗口中,是布尔值,默认为true,属性的get语句是必须有的,否则设置了Browsable为true也无法看到该属性 |
Category |
属性、事件 |
指定属性窗口进行分组显示时的类别,该特性帮助可视化编辑器将属性逻辑分组。通常为:外观(Appearence)、行为(Behavior)、布局(Layout)、数据(Data)等。 |
Description |
属性、事件 |
设置显示在属性窗口最下面的描述属性或事件功能的文字书名 |
DefaultValue |
属性 |
指定属性的默认值 |
DefaultProperty |
类 |
此特性为类特性。它指定服务器控件的默认属性 |
ReadOnly |
属性 |
指定属性在设计时只读 |
ToolBoxData |
类 |
指定把控件从工具箱拖放到页面上时的标记的初始值。默认情况下,Visual Studio只产生ID和Runat的标记 |