ASP.NET内置了大量用于获得服务器或客户端信息,进行状态管理,实现页面跳转,实现跨页传递数据的对象。
一.ASP.NET的常用对象
1.Page对象
常用的属性,方法,事件
Controls:获取ControlCollection对象,该对象表示用户接口层次结构中指定服务器控件的子控件集
IsPostBack:该属性返回一个逻辑值,表示页面是为响应客户端回发而再次加载
IsValid:该属性返回一个逻辑值,表示页面是否通过验证
EnableViewState:获取或设置一个值,用来指示当前页请求结束时是否保持其视图状态
Validators属性:获取请求的页上包含的全部验证空间的集合
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)//表示第一次加载,若没有,当页面由于用户的其它操作引起回发的时候,DropDownList中就会错误地出现重复选项,每回发一次,多出现一组选项
{
DropDownList1.Items.Add("item1");
DropDownList1.Items.Add("item2");
DropDownList1.Items.Add("item3");
}
}
常用方法:
DataBind:将数据源绑定到被调用的服务器控件及所有子控件
FindControl(id):在页面上搜索标识符为id的服务器控件。返回值为找到的控件,若控件不存在,则返回null
常用事件:
init:当服务器控件初始化时发生,这是控件生存周期第一步
Load:当服务器加载到Page对象时触发的事件
2.Response对象
该对象用于回应客户浏览器,告诉浏览器回应内容的报头,服务器端的状态信息,以及输出指定的内容
常用的属性:
ContentEncoding:获取或设置输出流的HTTP字符,该属性值是包含有关当前响应的字符集信息的Encoding对象
Cookies:获取响应Cookie集合,通过该属性可将Cookie信息写入客户端浏览器
Expires:获取或设置在浏览器上缓存的页过期之前的分钟数
方法:
Redirect(URL):将客户端浏览器重定向到参数URL指定的目标位置
Write(string):将信要写的息写入HTTP输出内容流,参数string表示要写的内容
Response.Write(DateTime.Now.ToLongTimeString());//显示服务器时间
Response.Write("<script language=javascript>alert('操作成功');</script>");//弹出一个信息框
Response.ContentType = "text/html";//设置文件类型
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");//设置文件内容编码
Response.WriteFile("1.txt");
Response.Redirect("http://www.baidu.com");
Response.Redirect("Default.aspx");
3.Request对象
主要用于获得客户端浏览器的信息
常用属性:
FilePath:获取当前请求的虚拟路径
QueryString:获取HTTP查询字符串变量集合
常用方法:
MapPath(VirtualPath):该方法将当前请求的URL中的虚拟路径VirtualPath映射到服务器上的物理路径
SaveAs(filename,includeHeaders):该方法将客户端的HTTP请求保存到磁盘,filename用于指定文件在服务器上保存的位置,includeHeaders用于指示是否同时保存HTTP头
Response.Write(Request.MapPath("Default3.aspx"));//在页面中显示请求文件在服务器中的物理路径
Request.SaveAs("d:\\abc.txt", true);//将用户的HTTP请求保存到abc.txt文件中
通过查询字符串实现跨页数据传递:Request对象中QueryString属性用于接收来自用户请求URL地址中"?"后面的数据,通常将这些数据称为“查询字符串,也称URL附加信息”用来在不同的网页传递数据
4.server对象
该对象提供了访问服务器的一些属性和方法,帮助程序判断当前服务器的各种状态
常用属性:
MachineName:该属性用于获取服务器的计算机名称
ScriptTimeout属性:该属性用于获取或设置请求超时的时间
常用的方法:
Execute(path):跳转到path指定的另一页面,在另一页面执行完毕后返回当前页
Transfer(path):终止当前页的执行,并为当前请求开始执行path指定的新页
MapPath(path):返回与web服务器上指定的虚拟路径相对应的物理路径
Server.MapPath("Default3.aspx");//将虚拟路径转换成服务器端的物理路径
二.ASP.NET的状态管理
ASP.NET是一种无状态的网页连接机制,服务器处理客户端请求的网页后,与该客户端的连接就中断了,此外,服务器每次往返都要销毁并重新创建网页,所以就需要使用与状态管理相关的对象来保存用户数据,使用ASP.NET提供的Cookie,Session,PreviousPage对象保存并获取数据,在不同页面间实现数据共享
1.创建和使用Cookie对象
Cookie是由服务器发送给客户机,并保存在客户机上的一些记录用户数据的文本文件
Response.Cookies["Vote"].Value = "yes";//向客户端写入Cookie
Response.Cookies["vote"].Expires = DateTime.Now.AddSeconds(10);//设置Cookie的有效期为10秒
读取Cookie:
使用Request对象的Cookies属性可以读取保存在客户机上指定Cookie的值
string GetCookie = "";//声明一个字符串常量
if(Request.Cookies["Vote"]!=null)判断目标Cookie是否存在
{
GetCookie = Request.Cookies["Vote"].Value;//读取指定的Cookie的值,赋给变量
}
Response.Write(GetCookie);//向页面显示目标Cookie的值
2.创建和使用Session对象
保存在Session中的数据可以跨网页使用,因此可以用来在不同网页中传递数据,Session是一个保存在服务器端的对象集合,避免了Cookie信息保存在客户端的不安全因素,非常适合用户保存用户名和密码等敏感信息
常用属性:
Timeout:获取或设置Session对象的超时时间,默认情况下Session的生存周期为20分钟
将数据保存到Session对象,从Session对象中取出数据:
Session["MyVal1"] = "这是Session保存的数据1";
string Val2 = "这是Session中保存的数据2";
Session["MyVal2"] = Val2;
Label1.Text = (string)(Session["MyVal1"]);
Label2.Text = Session["MyVal2"].ToString();
3.使用PreviousPage属性
当页面通过Server.Transfer方法或控件的PostBackUrl属性从A页面跳转到同一个ASP.NET应用程序的B页面,可以在B中使用PreviousPage获取A中控件的属性值,可以实现跨页面的数据传递
使用示例:传递控件的属性值
protected void Page_Load(object sender, EventArgs e)//result页面载入时执行的事件处理代码
{
Label1.Text = "你的选择是:";
if (PreviousPage != null)
{
CheckBoxList chk = (CheckBoxList)PreviousPage.FindControl("CheckBoxList1");
for(int i=0;i<chk.Items.Count;i++)
{
if(chk.Items[i].Selected)
{
Label1.Text = Label1.Text + chk.Items[i].Text + " ";
}
}
}
}