Download presentation
Presentation is loading. Please wait.
1
第6章 ASP.NET常用服务器控件 2017年3月22日
2
教学目标 了解Web控件的种类和属性 掌握基本的标准控件 掌握验证控件的使用 掌握登录控件的使用 掌握导航控件的使用 掌握用户控件的使用
2017年3月22日
3
第6章 ASP.NET常用服务器控件 6.1 服务器控件概述 6.2 标准服务器控件 6.3 验证控件 6.4 登录控件 6.5 导航控件
6.1 服务器控件概述 6.2 标准服务器控件 6.3 验证控件 6.4 登录控件 6.5 导航控件 6.6 用户控件 2017年3月22日
4
6.1 服务器控件概述 6.1.1 控件的种类 6.1.2 在页面中添加HTML服务器控件 6.1.3 在页面中添加Web服务器控件
6.1 服务器控件概述 控件的种类 在页面中添加HTML服务器控件 在页面中添加Web服务器控件 以编程方式添加服务器控件 设置服务器控件属性 2017年3月22日
5
6.1.1 控件的种类 ASP.NET提供了两大类服务器控件:HTML 服务器控件和Web 服务器控件。
控件的种类 ASP.NET提供了两大类服务器控件:HTML 服务器控件和Web 服务器控件。 HTML 服务器控件是由System.Web.UI.HtmlControls类实现的,它其实就是HTML标记的可编程版本。 这部分控件基本对应了传统的HTML标记,简单地说,任何 HTML标记都可以通过添加属性 runat="server" 来转换为 HTML 服务器控件 2017年3月22日
6
控件的种类 Web 服务器控件是由System.Web.UI. WebControls类实现的,它并不和HTML标记一一对应。Web 服务器控件比HTML 服务器控件具有更多的内置功能。 按照功能区分,Web 服务器控件还可以分为标准控件、数据控件、验证控件、导航控件、登陆控件、Web部件控件以及其他辅助安装的自定义控件等。 2017年3月22日
7
6.1.2 在页面中添加HTML服务器控件 给HTML标记添加runat="server"属性,该标记就变成了HTML服务器控件。
2017年3月22日
8
6.1.3 在页面中添加Web服务器控件 添加Web服务器控件有两种方式:
可以通过工具箱选择待添加的控件,然后直接将该控件拖动到需要添加的页面位置 也可以直接进入页面的源视图,通过HTML语法,直接将该控件添加到页面的相应位置。 2017年3月22日
9
6.1.4 以编程方式添加服务器控件 除了前面介绍的通过页面直接添加的方法以外,还可以在页面后台的cs代码文件中进行添加。
以编程方式添加服务器控件 除了前面介绍的通过页面直接添加的方法以外,还可以在页面后台的cs代码文件中进行添加。 Label myLabel=new Label(); myLabel.Text=“text”; Panel Panel1=new Panel(); Panel1.Controls.Add(myLabel); 2017年3月22日
10
6.1.5 设置服务器控件属性 在ASP.NET中,可以通过三种方式来设置服务器控件的属性: 通过“属性”对话框直接设置;
设置服务器控件属性 在ASP.NET中,可以通过三种方式来设置服务器控件的属性: 通过“属性”对话框直接设置; 在控件的HTML代码中设置; 或者通过页面的后台代码以编程的方式指定控件的属性。 2017年3月22日
11
6.2 标准服务器控件 6.2.1 标签控件(Label) 6.2.2 TextBox(文本框)控件
6.2.3 按钮控件(Button,LinkButton,ImageButton) 6.2.4 HyperLink(超链接)控件 6.2.5 图像控件(Image) 6.2.6 CheckBox(复选框)和CheckBoxList(复选框列表)控件 2017年3月22日
12
6.2.7RadioButto和RadioButtonList控件 6.2.8 列表控件(DropDownList和ListBox)
6.2.9文件上传控件(FileUpload) 广告控件(AdRotator) 6.2.11表格控件(Table) Literal控件和Panel控件 2017年3月22日
13
6.2.1标签控件(Label) 使用 Label 控件可以在页面上的固定位置显示文本。与静态文本不同,可以通过设置 Text 属性来自定义所显示的文本。 语法为: <asp:Label id="控件名称" Text="显示的文字" runat="server" /> 2017年3月22日
14
6.2.2 TextBox(文本框)控件 语法为: <asp:Textbox id="控件名称"
TextMode=" SingleLine | Multiline | Password" Text="显示的文字“ MaxLength="整数,表示输入的最大的字符数" Rows="整数,当为多行文本时的行数" Columns="整数,当为多行文本时的列数" 图4-6 新建数据库 2017年3月22日
15
6.2.2 TextBox(文本框)控件 Wrap="True | False,表示当控件内容超过控件宽度时是否自动换行“
AutoPostBack="True | False,表示在文本修改以后,是否自动上传数据“ OnTextChanged="当文字改变时触发的事件过程" runat="server" /> 2017年3月22日
16
6.2.3 按钮控件(Button,LinkButton,ImageButton)
2017年3月22日
17
Button(按钮)控件 <asp:Button id="控件名称" Text="按钮上的文字"
CommandArgument="此按钮管理的命令参数" CommandName="与此按钮关联的命令" OnCommand="事件过程名称" OnClick="事件过程名称" runat="server"/> 2017年3月22日
18
ImageButton(图像按钮)控件 语法为: <asp:ImageButton id="控件名称"
ImageUrl="要显示图像的URL" OnClick="事件过程名称" runat="server" /> 2017年3月22日
19
LinkButton(超链接按钮)控件 语法为: <asp:linkbutton id="控件名称" Text="按钮上的文字"
OnClick="事件过程名称" runat="server" /> 2017年3月22日
20
6.2.4 HyperLink(超链接)控件 这个控件为创建超链接提供了一种简便的方法。 语法为:
<asp:HyperLink id="控件名称" Text="显示文字" NavigateUrl="URL地址" Target="目标框架,默认为本框架,_blank为新窗口" runat="server" /> 2017年3月22日
21
6.2.5图像控件(Image) <asp: Image id="控件名称"
AlternateText="在图像无法显式时显示的备用文本" ImageAlign="图像的对齐方式" ImageUrl="要显示图像的URL" runat="server" /> 2017年3月22日
22
6.2.6 CheckBox(复选框)和CheckBoxList(复选框列表)控件
< asp:Checkbox id="控件名称" Checked="True | False“ Text="关联文字,为复选框创建标签" AutoPostBack="True | False " OnCheckedChanged="单击触发的事件过程" runat="server" /> 2017年3月22日
23
<asp:CheckBoxList ID="CheckBoxList1" runat="server">
<asp:ListItem>唱歌</asp:ListItem> <asp:ListItem>跳舞</asp:ListItem> <asp:ListItem>读书</asp:ListItem> <asp:ListItem>运动</asp:ListItem> </asp:CheckBoxList> 2017年3月22日
24
6.2.7 RadioButton和RadioButtonList控件
2017年3月22日
25
RadioButton(单选框)控件 < asp:RadioButton id="控件名称"
Checked=“True | False,表示控件是否被选中“ Text="关联文字,为单选按钮创建标签" TextAlign=" True | False,表示文本标签相对于控件的对齐方式" GroupName="单选控件所处的组名称" 2017年3月22日
26
RadioButtonList控件 在单个RadioButton控件和RadioButtonList控件之间,事件的工作方式略有不同。
单个RadioButton控件在用户单击该控件时引发CheckedChanged事件。默认情况下,这一事件并不导致向服务器发送页面,但通过将AutoPostBack属性设置为true,可以使该控件强制立即发送。 2017年3月22日
27
默认情况下,此事件并不导致向服务器发送窗体,但可以通过将AutoPostBack属性设置为true来指定此选项。
与单个的RadioButton控件相反,RadioButtonList控件在用户更改列表中选定的单选按钮时会引发SelectedIndexChanged事件。 默认情况下,此事件并不导致向服务器发送窗体,但可以通过将AutoPostBack属性设置为true来指定此选项。 2017年3月22日
28
6.2.8 列表控件(DropDownList和ListBox)
2017年3月22日
29
DropDownList列表控件 列表控件能在一个控件中为用户提供多个选项,同时又能够避免用户输入错误的选项。DropDownList是一个单项选择下拉列表框控件,语法为: <asp:DropDownList id="控件名称" AutoPostBack="True | False" OnSelectedIndexChanged="改变选择时触发的事件过程" runat="server"> <asp: ListItem Value="选项值1" Selected="True | False"> 选项文字1 </asp: ListItem> <asp: ListItem Value="选项值2" Selected="True | False"> 选项文字2 …… </asp:DropDownList > 2017年3月22日
30
ListBox列表控件 相对于DropDownList控件而言,ListBox控件可以指定用户是否允许多项选择。 2017年3月22日
31
6.2.9文件上传控件(FileUpload) 在ASP.NET中,开发环境默认的提供了文件上传控件来简化文件上传的开发。当开发人员使用文件上传控件时,将会显示一个文本框,用户可以键入或通过“浏览”按键浏览和选择希望上传到服务器的文件。 <form id="form1" runat="server"> <div> <asp:FileUpload ID="FileUpload1" runat="server" /> <asp:Button ID="Button1" runat="server" Text="选择好了,开始上传" /> </div> </form> 2017年3月22日
32
它有如下常见属性: 属性名 数据类型 说明 FileBytes byte[ ] 上传的文件内容的字节数组表示形式 FileContent Stream 上传文件的数据流 FileName string 上传文件在客户端的名字 HasFile bool 指示是否上传了文件 PostedFile HttpPostedFile 获取文件基础的HttpPostedFile对象 2017年3月22日
33
这个HttpPostedFile对象能帮我们做很多工作,它也有一些有用的常见属性:
属性名 数据类型 说明 ContentLength int 上传的文件内容的字节长度 ContentType string 上传文件的MIME 内容类型 FileName string 上传文件的在客户端的名字 InputStream Stream 指向上传文件的Stream对象 FileUpload控件还有一个void SaveAs (string filename)的方法,这个方法用于将上传的文件保存到服务器上。 2017年3月22日
34
使用FileUpload控件上传文件一般有如下几个步骤:
(1)利用HasFile属性判断是否上传了文件。 (2)在服务器上指定一个物理路径,并检查这个物理路径是否存在,如果不存在则先创建。 (3)指定上传文件在服务器上的上传路径,利用SaveAs()保存上传的文件。这一步还可以做一些其它检查工作,比如检查上传的文件格式是否符合要求或文件内容大小是否符合要求。 (4)将相对路径或者URL地址保存起来,以便客户访问或者下载。 这里要着重强调的是:我们保存上传的时候保存文件用的是物理路径,但是要保存的、日后客户端能访问得到的却是相对路径或者URL地址。 2017年3月22日
35
广告控件(AdRotator) AdRotator 服务器控件提供一种在ASP.NET网页上显示广告的方法。该控件可显示.gif文件或其他图形图像。当用户单击广告时,系统会将他们重定向到指定的目标URL。 AdRotator 服务器控件可从数据源(通常是XML文件或数据库表)提供的广告列表中自动读取广告信息,如图形文件名和目标URL。 2017年3月22日
36
XML文件中可以包含的属性 <ImageUrl></ImageUrl>:显示图像的URL
<NavigateUrl></NavigateUrl>:要转到的网页 <AlternateText></AlternateText>:图像不可用时显示的文本 <Impressions></Impressions>:显示频率 Height:广告的高度 Width:广告的宽度 2017年3月22日
37
6.2.11表格控件(Table) 表格控件(Table)来提供可编程的表格服务器控件,表中的行可以通过TableRow控件创建,而表中的列通过TableCell控件来实现。 2017年3月22日
38
protected void Button1_Click(object sender, EventArgs e) { TableRow row = new TableRow(); Table1.Rows.Add(row); //创建一个新行 for (int i = 9; i < 13; i++) //遍历4次创建新列 TableCell cell = new TableCell(); //定义一个TableCell对象 cell.Text = i.ToString(); //编写TableCell对象的文本 row.Cells.Add(cell); //增加列 } 2017年3月22日
39
6.2.12 Literal控件和Panel控件 <asp:Panel id="控件名称"
BackImageUrl="背景图像文件的路径" HorizontalAlign="center | Left | Right |Justify,表示其中的控件的水平对齐方式" Wrap="True | False,表示当行的长度超过面板的宽度时,其中的控件是否允许换行" Visible="True | False,表示其中控件是否显示" runat="server">其它控件</asp:Panel> 2017年3月22日
40
<form id="form1" runat="server"> <div>
<asp:panel id="myPanel" runat="server" backcolor="#eeeeee" width="300px" GroupingText="Panel控件"> <p>作为动态生成的文本框的容器…… </p> </asp:panel> 生成 TextBoxes: <asp:dropdownlist id="DropDownList1" runat="server"> <asp:listitem value="1">1</asp:listitem> <asp:listitem value="2">2</asp:listitem> <asp:listitem value="3">3</asp:listitem> </asp:dropdownlist> <asp:CheckBox ID="CheckBoxChangeFont" runat="server" AutoPostBack="True" oncheckedchanged="CheckBoxChangeFont_CheckedChanged" Text="设置字体"/> <asp:CheckBox ID="CheckBoxChangeBkGround" runat="server" AutoPostBack="True" oncheckedchanged="CheckBoxChangeBkGround_CheckedChanged" Text="设置背景"/> <asp:Literal ID="Literal1" runat="server"></asp:Literal> <asp:Literal ID="Literal2" runat="server"></asp:Literal> </form> PanelExample.aspx.cs 2017年3月22日
41
Panel控件的其他功能 动态生成的控件的容器 对控件和标记进行分组 具有默认按钮的窗体 向其他控件添加滚动条 页上的自定义区域
42
Literal控件可以作为页面上其他内容的容器,最常用于向页面中动态添加内容。
对于静态内容,无需使用容器,可以将标记作为HTML直接添加到页面中。但是,如果要动态添加内容,则必须将内容添加到容器中。 2017年3月22日
43
6.3 验证控件 6.3.1 验证控件及其作用 6.3.2 验证控件的属性和方法
6.3 验证控件 验证控件及其作用 验证控件的属性和方法 表单验证控件(RequiredFieldValidator) 比较验证控件(CompareValidator) 范围验证控件(RangeValidator) 自定义验证控件(CustomValidator) 正则验证控件(RegularExpressionValidator) 验证组控件(ValidationSummary) 禁用数据验证 2017年3月22日
44
验证控件及其作用 ASP.NET验证控件是一个服务器控件集合,允许这些控件验证关联的输入服务器控件(如TextBox),并在验证失败时显示自定义消息,每个验证控件执行特定类型的验证。一个输入控件可以同时被多个验证控件关联验证。ASP.NET的验证控件如表所示。 2017年3月22日
45
<asp:RequiredFieldValidator> 验证某输入控件中的值,使其不能为空
<asp:CompareValidator> 验证某输入控件中的值与另一个控件中的值或与一个特定的值是否相匹配 <asp:RangeValidator> 验证某输入控件中的值是否在某个特定文本内或是在某个数值范围内 <asp:RegularExpressionValidator> 验证某输入控件中的值是否与一个特定的正则表达式相匹配 <asp:CustomValidator> 使用一个客户端的或服务器端的自定义函数对某个输入控件进行验证 <asp:ValidationSummary> 显示所有当前页面验证错误信息的摘要 2017年3月22日
46
验证控件的属性和方法 所有的验证控件都继承自BaseValidator 类,BaseValidator 类为所有的验证控件提供了一些公用的属性和方法,如表所示。 2017年3月22日
47
验证控件将验证的输入控件的ID,如果此为非法 ID,则引发异常
ControlToValidate属性 验证控件将验证的输入控件的ID,如果此为非法 ID,则引发异常 Display属性 指定的验证控件的显示行为 EnableClientScript属性 指示是否启用客户端验证,通过将 EnableClientScript 属性设置为 false,可在支持此功能的浏览器上禁用客户端验证 ErrorMessage属性 当验证失败时在 ValidationSummary 控件中显示的错误信息。如果未设置验证控件的 Text 属性,则验证失败时,验证控件中仍显示此文本。ErrorMessage 属性通常用于为验证控件和 ValidationSummary 控件提供各种消息 2017年3月22日
48
指定当验证失败时用于显示错误消息的文本颜色
ForeColor 属性 指定当验证失败时用于显示错误消息的文本颜色 Enabled属性 指示是否启用验证控件,通过将该属性设置为 false 可以阻止验证控件验证输入控件 IsValid属性 指示 ControlToValidate 属性所指定的输入控件是否被确定为有效 Text属性 此属性设置后,验证失败时会在验证控件中显示此消息。如果未设置此属性,则在该控件中显示 ErrorMessage 属性中指定的文本 Validate方法 验证相关的输入控件,并更新IsValid属性 2017年3月22日
49
6.3.3 表单验证控件(RequiredFieldValidator)
语法为: <asp:RequiredFieldValidator id="控件名称" Display="Dynamic | Static | None" ControlToValidate="被验证的控件的名称" ErrorMessage="错误发生时的提示信息" runat="server" /> 2017年3月22日
50
<form id="form1" runat="server"> <div>
姓名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="姓名NotNull“> </asp:RequiredFieldValidator><br /> 密码:<asp:TextBox ID="TextBox2" runat="server“> </asp:TextBox><br /> <asp:Button ID="Button1" runat="server" Text="登陆" /><br /> </div> </form> 2017年3月22日
51
6.3.4比较验证控件(CompareValidator)
语法为: <asp:CompareValidator id="控件名称" ControlToValidate="第一个被验证的控件的名称" ControlToCompare="第二个被验证的控件的名称" ValueToCompare="指定的数据值" Type=" String|Integer|Double|Date|Currency,表示按哪一种数据类型比较" 2017年3月22日
52
6.3.4比较验证控件(CompareValidator)
Operator="Equal | NotEqual | GreaterThan |GreaterThanEqual | LessThan | LessThanEqual |DataTypeCheck,分别表示=、<>、>、 >=、<、<=" ErrorMessage="错误发生时的提示信息" Display="Dynamic | Static | None" runat="server" /> 2017年3月22日
53
<asp:CompareValidator ID="CompareValidator1" runat="server"
ControlToCompare="TextBox2" ControlToValidate="TextBox1" ErrorMessage=“输入的格式有错误!" Operator="GreaterThan" Type="Date"> </asp:CompareValidator> 2017年3月22日
54
6.3.5 范围验证控件(RangeValidator)
<asp:RangeValidator id="控件名称" ControlToValidate="被验证的控件的名称" MinimumValue="最小值" MaximumValue=“最大值” Type=“ String|Integer|Double|Date|Currency, 表示按哪一种数据类型比较" ErrorMessage="错误发生时的提示信息" Display="Dynamic | Static | None" runat="server" /> 2017年3月22日
55
<asp:RangeValidator ID="RangeValidator1" runat="server"
ControlToValidate=“TextBox1” ErrorMessage=“超出范围!" MaximumValue="2010/1/1“ MinimumValue="07/1/1" Type="Date"></asp:RangeValidator> <asp:RangeValidator ID="RangeValidator2" runat="server" ControlToValidate="TextBox2" ErrorMessage="超出范围! " MaximumValue="2010/1/1" MinimumValue="2007/1/1" Type="Date"></asp:RangeValidator> <br /> 2017年3月22日
56
6.3.6自定义验证控件(CustomValidator)
<asp: CustomValidator id="控件名称" ControlToValidate="被验证的控件的名称" ClientValidationFunction="客户端验证函数" OnServerValidate="服务器端验证函数" ErrorMessage="错误发生时的提示信息" Display="Dynamic | Static | None" runat="server" /> 2017年3月22日
57
6.3.7正则验证控件 (RegularExpressionValidator)
<asp:RegularExpressionValidator id="控件名称" ControlToValidate="被验证的控件的名称" ValidationExpression="正则表达式" ErrorMessage="错误发生时的提示信息" Display="Dynamic | Static | None" runat="server" /> 2017年3月22日
58
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="TextBox1" Display="Dynamic" ErrorMessage="RegularExpressionValidator" </asp:RegularExpressionValidator> 2017年3月22日
59
6.3.8 验证组控件(ValidationSummary)
集中显示所有未通过验证的控件的错误提示信息 <asp:ValidationSummary id="控件名称" HeaderText="标题文字" DisplayMode="List | ButtetList | SingleParagraph,将摘要显示为列表、项目符号列表或单个段落" ShowSummary= "True|False,控制显示还是隐藏ValidationSummary控件" ShowMessageBox="True|False,是否在消息框中显示摘要" runat="server" /> 2017年3月22日
60
6.3.9 禁用数据验证 在特定控件中禁用验证:将相关控件的 CausesValidation 属性设置为 false。
禁用数据验证 在特定控件中禁用验证:将相关控件的 CausesValidation 属性设置为 false。 禁用验证控件:将验证控件的 Enabled 属性设置为 false。 禁用客户端验证:将验证控件的 EnableClientScript 属性设置为 false。 2017年3月22日
61
6.4 登录控件 6.4.1 登录控件(Login) 6.4.2 登录名称控件(LoginName)
6.4 登录控件 登录控件(Login) 登录名称控件(LoginName) 登录视图控件(LoginView) 登录状态控件(LoginStatus) 密码更改控件(ChangePassword) 生成用户控件(CreateUserWizard) 2017年3月22日
62
登录控件(Login) 登录控件是一个复合控件,它包含用户名和密码文本框,以及一个询问用户是否希望在下一次访问该页面时记起其身份的复选框。当用户勾选此选项时,下一次用户访问此网站,将自动进行身份验证。 2017年3月22日
63
6.4.2 登录名称控件(LoginName) 登录名称控件(LoginName)是一个用来显示已经成功登录的用户的控件。
在Web应用程序开发中,开发人员常常需要在页面中通知相应的用户已经登录,如用户在商品网站上进行登录,登录成功后可以在相应的页面中提示“您已登录,您的用户名是XXX”等,这样不仅能够提高用户的友好度,也能够让开发人员在Web应用程序中方便的对用户信息做收集整理。 2017年3月22日
64
登录视图控件(LoginView) 在开发一个应用程序时,开发人员希望应用程序能够实现功能当用户在网站中没有登录时,用户看到的视图是没有登录时的视图,包括网站的风格、系统的提示信息等。而当用户登录后,用户看到的视图是登录后的视图,同样包括网站的风格、系统的提示信息等。 2017年3月22日
65
登录状态控件(LoginStatus) 登录状态控件(LoginStatus)用于显式用户验证时的状态,LoginStatus包括“登录”和“注销”两种状态. 对于LoginStatus控件的状态是由相应的Page对象的Request属性中的IsAuthenticated属性进行决定。 2017年3月22日
66
6.4.5 密码更改控件(ChangePassword)
在应用程序开发中,开发人员需要编写密码更改控件让用户能够快速的进行密码更改。 在应用程序的使用中,用户会经常需要更改密码,更改密码有很多的可能性。 2017年3月22日
67
6.4.6 生成用户控件(CreateUserWizard)
生成用户控件(CreateUserWizard)为MembershipProvider对象提供了用户界面,使用该控件能够方便的让开发人员在页面中生成相应的用户,同时当用户访问该应用程序时,用户能够通过使用CreateUserWizard控件的相应的功能进行注册。 2017年3月22日
68
6.5 导航控件 6.5.1 SiteMapPath导航控件 6.5.2 Menu导航控件 6.5.3 TreeView导航控件
2017年3月22日
69
6.5.1 SiteMapPath导航控件 要使用SiteMapPath导航控件,首先需要使用站点地图定义网站的结构,创建站点地图文件。然后使用SiteMapPath控件实现网站导航。 2017年3月22日
70
6.5.2 Menu导航控件 Menu控件主要用于创建一个菜单,让用户快速选择不同页面,从而完成导航功能。
该控件可以包含一个主菜单和多个子菜单。菜单有静态和动态两种显示模式。 静态显示模式是指定义的菜单始终完全显示,动态显示模式指需要用户将鼠标停留在菜单项上时才显示子菜单。 2017年3月22日
71
6.5.3 TreeView导航控件 TreeView控件与Menu控件相似,都提供了导航功能。
TreeView控件与Menu控件的区别是它不再像Menu控件由菜单项和子菜单组成,而是用一个可折叠树显示网站的各个部分。 根节点下可以包含多个子节点,子节点下又可以包含子节点,最下层是叶节点。访问者可以快速看到网站的所有部分及位于网站结构层次中的位置。树中的每个节点都显示为一个超链接,被单击时把用户引导到相应的部分。 2017年3月22日
72
6.6 用户控件 用户控件:用户控件是能够在其中放置标记和服务器控件的容器。然后,可以将用户控件作为一个单元对待,为其定义属性和方法。
6.6 用户控件 用户控件:用户控件是能够在其中放置标记和服务器控件的容器。然后,可以将用户控件作为一个单元对待,为其定义属性和方法。 2017年3月22日
Similar presentations