《一》认识ASP.NET
1.ASP.NET程序结构
(1)前台和后台
Default.aspx是进行界面设计的文件,通常称为前台。用户能看到。
Default.aspx.cs是后台代码,由程序员完成后台代码的设计,。用户看不到。
Default.aspx源码界面顶部有一句声明:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
CodeFile参数设置的内容就是本界面所关联的后台代码。
2.事件:两个参数:sender和e。告诉程序,谁(sender)做了什么(e)。
protected void Button1_Click(object sender, EventArgs e) { this.Label1.Text = "你已经单击了OK按钮,欢迎进入ASP.NET 3.5开发世界"; }
理解windows系统是消息驱动的,循环消息机制。
3.程序处理过程和本质(这是重点★★★★★)
一个网页的完整处理过程,本质是一个事件处理的顺序。整个事件的完整处理过程,就是一个页面的生命周期。网页的生命周期主要分10步,也就是10个需要处理的事件。
(1)初始化对象
(2)导入ViewState数据
(3)用LoadPostData处理Postback数据
(4)导入对象
(5)RaisePostBackChanged事件
(6)处理客户端PostBack事件
(7)预先呈递对象
(8)保存ViewState
(9)呈递给页面
(10)销毁对象:服务器吧页面呈现给浏览器后,所有的对象都应该被销毁。销毁所有在建立这个页面时创建的对象。销毁任何对象都不会产生错误,包括页面对象。
4.配置文件:web.config。用于配置网站。
5.名词解释
(1).NET Framework:框架。支持生成和运行下一代应用程序和XML Web Services的内部windows组件。
(2)公共语言运行库: (common language runtime,CLR) 托管代码执行核心中的引擎。运行库为托管代码提供各种服务,如跨语言集成、代码访问安全性、对象生存期管理、调试和分析支持。
(3)托管代码:以运行库为目标的代码称为托管代码。
(4)非托管代码:不以运行库为目标的代码称为非托管代码。
(5)LINQ:一种集成查询语言,可支持对数据、对象等进行查询。
(6)WCF:一种服务框架,类似于早期的Remoting,但更加容易调用。
(7)WPF:一种最近的Windows Forms程序形式,用来创建更加美观的窗体界面。
(8)Ajax: 一个JS框架,用户B/S程序,也就是网站项目,支持客户端的快速响应。
(9)支持分页的数据模板空间:网站项目中,添加了ListView和DataPager空间,可自定义分页数据的读取和显示。
可以ASP.NET网页作为Web应用程序的用户界面和后台逻辑部分。使用服务器端代码来实现应用程序逻辑。服务器上运行的代码动态地生成到浏览器或客户端设备的网页输出。
6.装箱与拆箱
装箱:把值类型转换为引用类型
拆箱:将引用类型转换为值类型
double a = 45.2; //定义值 object b = a; //装箱操作 Response.Write(a.ToString() + "-" + b.ToString());//输出结果
double a = 45.2; //定义值 object b = a; //转化为引用对象后的值 double c = (double)b;//将引用对象拆箱,并返回值
7.普通数组和动态数组
int[] a = new int[2]; //普通数组 ArrayList ar = new ArrayList();//初始化动态数组 ar.Add("A"); //在动态数组中添加值 ar.Add("B");
8.泛型
类似C++中的模板
9.注释
C# 中的注释有多种情况,常见的分为三种:
(1)单行代码后的注释.使用//来注释。
(2)方法前的注释.用来概括说明方法的功能和方法中的参数意义,用///表示。
(3)对整个程序的说明. 一般用在程序的开始处,说明这个文件的来源或者版权。用/*xxxxx*/结束。
/// <summary> ///Class1 的摘要说明 /// </summary> public class Class1 { public Class1() { // //TODO: 在此处添加构造函数逻辑 // } }
10.对象、类、接口和继承
(1)C#只允许继承一个父类,但允许继承多个接口。
(2)局部类:用关键字partial修饰。
public partial class _Default : System.Web.UI.Page
11.隐式类型:var
12.类中属性赋值自动实现
public string name //姓名属性 { get; set; }
13.Lambda表达式
类似C++的指针。在LINQ查询中应用非常广泛。
《二》网页控件
1.控件分类:Web控件和HTML控件
(1)HTML控件:只显示内容,不与服务器交互。
(2)Web控件:即服务器控件,每次操作时都与服务器交互。每次交互都会页面刷新。考虑效率问题。(在vs2008工具箱中显示的是“标准”分类)
2.使用控件
<asp:TextBox ID="txtName" runat="server" ></asp:TextBox>
asp:TextBox 说明这是一个标准的Web控件
ID=”txtName” 此控件的唯一标识,可在后台代码中通过此ID访问该控件
runat=”server“ 表示次控件是运行在服务器端的
(2)使用控件的属性
方法1:在可视化设计窗口,使用属性窗口
方法2:在源码窗口,在源码的任何一个属性后面,按Space键(空格键),自动弹出当前控件的所有属性供选择
(3)控件事件处理
方法1:单击控件属性上的闪电图标,选择对应的事件处理
方法2:按钮事件可直接双击按钮控件
protected void Button1_Click(object sender, EventArgs e) { Label1.Text = "欢迎你," + txtName.Text; }
3.表示类控件
Label:不进行操作,只显示数据。不允许用户单击或者选中。
4.输入类控件
(1)TextBox 不允许用户选择,只允许用户输入
(2)
RadioButton 单选按钮 ,要设置GroupName属性,表明是同一组
CheckBox 多选按钮
/// <summary> /// 单选按钮响应事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Button2_Click(object sender, EventArgs e) { if (RadioButton1.Checked) { Label2.Text = "你选择的是一年级"; } if (RadioButton2.Checked) { Label2.Text = "你选择的是二年级"; } } /// <summary> /// 多选按钮响应事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Button3_Click(object sender, EventArgs e) { if (CheckBox1.Checked && CheckBox2.Checked) { Label2.Text = "你选择了体育和音乐"; } else if (CheckBox1.Checked) { Label2.Text = "你选择了体育"; } else if (CheckBox2.Checked) { Label2.Text = "你选择了音乐"; } else { Label2.Text = "两项都没有选择"; } }
(2)DropDownList
DropDownList和ListBox功能一样,以列表形式显示多个选项。DropDownList带有下拉框,ListBox就是列表形式。
/// <summary> /// DropDownList选择结果的按钮响应 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Button4_Click(object sender, EventArgs e) { Label3.Text = "你选择的是:"+DropDownList1.SelectedValue; } /// <summary> /// ListView选择结果的按钮响应 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Button5_Click(object sender, EventArgs e) { Label4.Text = "你选择的是:" + ListBox1.SelectedValue; }
5.布局类控件
一般主要参与界面的设计,不控制实际的代码,也不允许用户操作。
(1)Panel 面板控件
(2)Table 表格控件
<asp:Panel ID="Panel1" runat="server" Height="90px" Width="476px"> //这里是在Panel中添加的控件 </asp:Panel> <asp:Table ID="Table1" runat="server" GridLines="Both" Height="113px" Width="401px"> <asp:TableRow runat="server"> <asp:TableCell runat="server">第1格子</asp:TableCell> <asp:TableCell runat="server">第2格子</asp:TableCell> </asp:TableRow> <asp:TableRow runat="server"> <asp:TableCell runat="server">第3格子</asp:TableCell> <asp:TableCell runat="server">第4格子</asp:TableCell> </asp:TableRow> </asp:Table>
6.提交类控件
用户输入完数据,或作出选择后,交给服务器处理后面的事情。通常通过按钮完成。
Web控件提供了3个按钮:Button、LinkButton、ImageButton。三种按钮用法基本一致。
3.验证控件
用来验证用户在页面上的输入,防止用户乱输入数据。
检查用户的输入,并实时给出错误的提示,以提示用户修改。
主要有6个验证控件:
RequiredFieldValidator:必须字段验证。用于检查是否有输入值
CompareValidator:比较验证。按控件的设置比较两个输入值
RangeValidator:范围验证。验证输入是否在指定范围内
RegularExpressionValidator:正则表达式验证。使用正则表达式验证控件的输入
CustomValidator:自定义验证。允许程序员以自定义方式来验证控件
ValidationSummary:汇总错误提示信息
3.1.RequiredFieldValidator:必须有输入
需要设置两个属性:ControlToValidate="TextBox_rfv" //关联需要验证的控件
ErrorMessage="必须输入内容" //错误提示
<div> <asp:TextBox ID="TextBox_rfv" runat="server"></asp:TextBox> <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox_rfv" ErrorMessage="必须输入内容"></asp:RequiredFieldValidator> </div> <asp:Button ID="Button_rfv" runat="server" Text="Button" />
3.2.CompareValidator:比较控件。常用就是验证两个密码是否相同
<asp:CompareValidator ID="CompareValidator1" runat="server" ControlToCompare="TextBox_new" ControlToValidate="TextBox_renew" ErrorMessage="新旧密码不一致!"></asp:CompareValidator>
3.3.RangeValidator:范围验证控件
主要是设置4个属性值:
ControlToValidate关联需要验证的控件
ErrorMessage设置错误提示信息
MaximumValue最大值
MinimumValue最小值
<asp:TextBox ID="TextBox_rv" runat="server"></asp:TextBox> <asp:RangeValidator ID="RangeValidator1" runat="server" ControlToValidate="TextBox_rv" ErrorMessage="范围错误,在0-100之间" MaximumValue="100" MinimumValue="0"></asp:RangeValidator>
3.4.RegularExpressionValidator 正则表达式验证
通过正则表达式验证输入的数据是否符合指定格式。正则表达式写在ValidationExpression属性中。
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="TextBox_rev" ErrorMessage="邮箱输入错误" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator>
部分正则表达式验证:
功能 | 验证码 |
匹配Email | \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+ ([-.]\w+)* |
匹配URL | http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)? |
匹配负数 | |
匹配整数 | |
匹配26个英文字母 |
3.5.CustomValidator 自定义验证控件
主要是实现一个自定义验证方法:ServerValidate事件,参数args.Value是需要验证的值
/// <summary> /// 自定义验证控件的验证方法 /// </summary> /// <param name="source"></param> /// <param name="args"></param> protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args) { try { if (args.Value.Length == 8) //判断用户输入的长度是否是8位 { args.IsValid = true; //验证通过 } else { args.IsValid = false; //验证失败 } } catch (System.Exception ex) { args.IsValid = false;//发生异常时,验证失败 } }
3.6.ValidationSummary验证控件的错误汇总
用来显示页面上所有验证控件的错误信息。错误信息来自每个验证控件的ErrorMessage属性
有2个主要属性:
DisplayMode:指定显示模式,可以是列表、项目符号列表或单个段落
ShowSummary:控制是显示还是隐藏控件
4. Calendar日历控件 可视日历控件
通过SelectedDate属性改变其他属性等。
5.AdRotator 动态广告控件
定义和用法
AdRotator 控件用于显示图像序列。
该控件使用 XML 文件来存储 ad 信息。XML 文件使用 <Advertisements> 开始和结束。在 <Advertisements> 标签内部,应该有若干个定义每条 ad 的 <Ad> 标签。每次加载这个页面时,会按照一定的概率加载其中一条<Ad>标签内的广告内容。
控件属性:
属性 | 描述 | .NET |
---|---|---|
AdvertisementFile | 包含 ad 信息的 XML 文件的路径。 | 1.0 |
AlternateTextField | 代替广告的 Alt 文本而使用的数据字段。 | 2.0 |
ImageUrlField | 代替广告的 ImageURL 属性而使用的数据字段。 | 2.0 |
KeywordFilter | 根据类别对广告进行过滤。 | 1.0 |
NavigateUrlField | 代替广告的 NavigateUrl 属性而使用的数据字段。 | 2.0 |
runat | 规定该控件是服务器控件。必须设置为 "server"。 | 1.0 |
Target | 在何处打开 URL。 | 1.0 |
<Ad> 标签中预定义的元素被列在下面:
属性 | 描述 |
---|---|
<ImageUrl> | 可选。图像文件的路径。 |
<NavigateUrl> | 可选。用户点击该 ad 时所链接的 URL。 |
<AlternateText> | 可选。图像的可选文本。 |
<Keyword> | 可选。ad 的类别。 |
<Impressions> | 可选。显示概率。 |
xml文件示例:
<?xml version="1.0" encoding="utf-8" ?> <Advertisements> <!--这是第1条Ad广告的内容--> <Ad> <ImageUrl>baidu.gif</ImageUrl> <NavigateUrl>http://www.baidu.com</NavigateUrl> <AlternateText>百度</AlternateText> <Impressions>80</Impressions> <Keyword>img1</Keyword> </Ad> <!--这是第2条Ad广告的内容--> <Ad> <ImageUrl>google.gif</ImageUrl> <NavigateUrl>http://www.google.com</NavigateUrl> <AlternateText>谷歌</AlternateText> <Impressions>80</Impressions> <Keyword>img2</Keyword> </Ad> </Advertisements>
PS:第一部分暂时更新到这里...