您的位置:首页 > 编程语言 > ASP

ASP.NET内置对象

2012-08-06 20:24 531 查看
简述ASP.NET内置对象。
ASP.NET提供了内置对象有Page、Request、Response、Application、Session、Server、Mail、Cookies、Cache、Trace 等等。

一..Page对象

Page对象是由System.Web.UI命名空间中的Page类来实现的,Page 类与扩展名为.aspx 的文件相关联,这些文件在运行时被编译为Page对象,并缓存在服务器内存中。Page对象提供的常用属性、方法及事件如下所示:

名 称 功 能 说 明

IsPostBack属性    获取一个值,该值表示该页是否正为响应客户端回发而加载

IsValid属性      获取一个值,该值表示页面是否通过验证

Application属性    为当前 Web 请求获取 Application 对象。

Request属性      获取请求的页的 HttpRequest 对象

Response属性     获取与 Page 关联的 HttpResponse 对象。该对象使您得以将 HTTP 响应数据发送到客户端,并包含有关该响应的信息。

Session属性      获取 ASP.NET 提供的当前 Session 对象。

Server属性      获取 Server 对象,它是HttpServerUtility 类的实例。

DataBind方法     将数据源绑定到被调用的服务器控件及其所有子控件

RegisterClientScriptBlock方法  向页面发出客户端脚本块

Init事件        当服务器控件初始化时发生

Load事件       当服务器控件加载到Page对象中时发生

Unload事件      当服务器控件从内存中卸载时发生
1.IsPostBack属性

IsPostBack属性用来获取一个布尔值,如果该值为true,则表示当前页是为响应客户端回发(例如单击按钮)而加载,否则表示当前页是首次加载和访问。

private void Page_Load(object sender, System.EventArgs e)

{

if( !Page.IsPostBack )

{

Label1.Text = "页面第一次加载!";

}

else

{

Label1.Text = "页面第二次或第二次以上加载!";

}

}

IsValid属性

IsValid属性用来获取一个布尔值,该值指示页验证是否成功,如果页验证成功,则为 true;否则为 false。一般在包含有验证服务器控件的页面中使用,只有在所有验证服务器控件都验证成功时,IsValid属性的值才为true。

private void Button_Click(Object Sender, EventArgs e)

{

if (Page.IsValid == true) //也可写成if (Page.IsValid)

{

mylabel.Text="您输入的信息通过验证!";

}

else

{

mylabel.Text="您的输入有误,请检查后重新输入!";

}

}

二..Request对象

Request

1.Request封装了客户端请求信息。Request的常见属性如下:(IsAuthenticated, Item,Params )等没添加进去作声明

类 别
名 称
描 述
属性

AcceptType

获取客户端支持的MIME类型

UserHostAddress

获取客户端主机的IP地址

UserHostName

获取客户端主机名

UserLanguages

获取客户端语言信息,是一个字符串数组

UserAgent

客户端浏览器的原始代理信息

UrlReferrer

获取用户由哪个url跳转到当前页面(Uri)

Path

获取当前请求的虚拟路径

ContentEncoding

设置请求对象的编码(Encoding)

Headers

获取HTTP头集合

QueryString

获取HTTP查询字符串的集合(NameValueCollection)

Form

获取窗体变量集合

Browser

获取客户端浏览器信息

ApplicationPath

获取请求的资源在网站上的根路径(string)

Cookies

客户端发送到服务器的Cookie集合(HttpCookieCollection)

2.常用属性的二级属性:

① Browser的二级属性

类 别
名 称
描 述
属性

Beta

浏览器版本是否是Beta版

Version

浏览器版本名称

Platform

来访者使用的系统平台

Cookies

浏览器是否支持Cookies

ActiveXControls

浏览器是否支持ActiveX控件

Type

浏览器名称和主版本号(整数部分)

ClrVersion

获取安装在客户端的.NET Frame版本

示例:

ListBox1.Items.Add(Request.Browser.Beta.ToString());

//获取客户端浏览器是否是Beta版,转换为字符串后添加到列表框中

ListBox1.Items.Add(Request.Browser.ClrVersion.ToString());

//获取安装在客户端的.NET Frame版本,转换为字符串后添加到列表框中

UrlReferrer的二级属性

类 别
名 称
描 述
属性

Port

获取发出客户端请求的端口号

Authority

获取服务器域名系统的主机名(IP地址)和端口号

AbsolutePath

获取URL的绝对路径

Host

获取客户端主机的主机名

HostNameType

获取URL中主机名的类型

UserInfo

获取用户名、密码或其他与指定URL相关联的信息

示例:

ListBox1.Items.Add(Request.UrlReferrer.Port.ToString());

//获取客户端发出客户端请求的端口号,转换为字符串后添加到列表框中

ListBox1.Items.Add(Request.UrlReferrer.Host.ToString());

//获取发出客户端请求的主机名,转换为字符串后添加到列表框中

3.Request对象的AcceptType属性的主要功能是获取客户端所支持的MIME类型

AcceptType属性返回一个字符串数组,其数组的下标下限是0,上限可通过Request对象的AcceptTypes.GetUpperBound(0)属性获得,通过循环可将数组中的值逐一输出;

MIME(Multipurpose Internet Mail Extensions)是一个有关信息格式的协议:text/plain 、image/jpeg 、text/xml 、 text/javascript......

eg:

protected void RadioButtonList1_SelectedIndexChanged(object sender,
EventArgs e)
{
int i;
switch (RadioButtonList1.SelectedIndex)
{
case 0:
{
ListBox1.Items.Clear();
ListBox1.Items.Add(Request.Browser.Beta.ToString());
ListBox1.Items.Add(Request.Browser.Version.ToString());
ListBox1.Items.Add(Request.Browser.Platform.ToString());
ListBox1.Items.Add(Request.Browser.Cookies.ToString());
ListBox1.Items.Add(Request.Browser.ActiveXControls.ToString());
ListBox1.Items.Add(Request.Browser.Type.ToString());
ListBox1.Items.Add(Request.Browser.ClrVersion.ToString());
break;
}
case 1:
{
ListBox1.Items.Clear();
ListBox1.Items.Add(Request.UrlReferrer.Port.ToString());
ListBox1.Items.Add(Request.UrlReferrer.Authority.ToString());
ListBox1.Items.Add(Request.UrlReferrer.AbsolutePath.ToString());
ListBox1.Items.Add(Request.UrlReferrer.Host.ToString());
ListBox1.Items.Add(Request.UrlReferrer.HostNameType.ToString());
ListBox1.Items.Add(Request.UrlReferrer.UserInfo.ToString());
break;
}
case 2:
{
ListBox1.Items.Clear();
ListBox1.Items.Add(Request.UserHostAddress.ToString());
ListBox1.Items.Add(Request.UserHostName.ToString());
ListBox1.Items.Add(Request.UserLanguages[0].ToString());
ListBox1.Items.Add(Request.UserAgent.ToString());
ListBox1.Items.Add(Request.Path.ToString());
ListBox1.Items.Add(Request.ContentEncoding.ToString());
break;
}
case 3:
{
i = Request.AcceptTypes.GetUpperBound(0);
ListBox1.Items.Clear();
while (i > 0)
{
ListBox1.Items.Add(Request.AcceptTypes[i]);
i = i - 1;
}
break;
}
case 4:
{
i = Request.Headers.Count - 1;
ListBox1.Items.Clear();
while (i > 0)
{
ListBox1.Items.Add(Request.Headers[i]);
i = i - 1;
}
break;
}
case 5:
{
ListBox1.Items.Clear();
ListBox1.Items.Add(Request.QueryString["ID"]);
ListBox1.Items.Add(Request.QueryString["Name"]);
Break
}
}
}


QueryString属性

Request对象的QueryString属性的功能是获取HTTP查询字符串的集合,返回一个字符串数组。在本例中,若在地址栏中输入http://localhost:2124/sun3_1/sun3_1.aspx?ID=
1994&Name=sun,当选定【HTTP查询字符串】选项时,列表框中显示的值如图3-3所示。地址中“?”后面的部分,即“ID=1994&Name=sun”,被视为整个页面执行时的参数。本例中有2个,当有多个参数时,各参数间需要用“&”符号连接。(具体看上面代码)

三..Response对象

 Response常用属性如下:

属性名值类型说明
Charsetstring表示输出流的所使用的字符集
ContentEncodingEncoding设置输出流的编码
ContentLengthInt输出流的字节大小
ContentTypestring输出流的HTTP MIME类型
CookiesHttpCookieCollection服务器发送到客户端的Cookie集合
OutputTextWriter服务器响应对象的字符输出流
RedirectLocation

BufferOutPut

string

将当前请求重定向

是否使用缓存

  Response常用方法

属性名返回值类型说明
AppendCookievoid向响应对象的Cookie集合中增加一个Cookie
Clearvoid清空缓冲区中的所有内容输出
Closevoid关闭当前服务器到客户端的连接
Endvoid终止响应,并且将缓冲区中的输出发送到客户端
Redirect

write

writefile

Flush

void

void

void

void

重定向当前请求

将字符串输送到客户端

将文本文件输送到客户端

强制输出缓存的所有数据

示例:

Response.Write("新年快乐"); //将“新年快乐”输出到网页上

Response.WriteFile("f:\\sun.txt"); //将f盘根目录下的sun.txt文件中的内容输出到网页上

Response.Redirect("login.htm"); //将页面跳转到本站点中的login.htm页面上

Response.Redirect("http://www.sina.com.cn"); //将页面跳转到www.sina.com.cn页面上

Response.Close() //断开页面和服务器端的连接

四..Server对象

属性名返回值类型说明
Executevoid执行指定的资源,并且在执行完之后再执行本页的代码
HtmlDecodestring消除对特殊字符串编码的影响
HtmlEncodestring对特殊字符串进行编码
MapPathstring获取指定相对路径在服务器上的无力路径(一般用于上传资源需要服务端物理路径时使用)
Transfervoid停止执行当前程序,执行指定的资源(内网同站点使用,且地址显示不会改变 和response.redirect的区别已经说明)
UrlDecodestring对路径字符串进行解码
UrlEncode

CreateObject

string

对路径字符串进行编码

创建COM 对象的一个服务器实例

HtmlEncode(HtmlDecode)/ UrlEncode(UrlDecode) 等的区别我已经在别的文章说明, 或者自行查阅文档

五..Session对象

属 性

说 明
属 性 值
Count

获取会话状态集合中Session对象的个数
Session对象的个数

TimeOut

获取并设置在会话状态提供程序终止会话之前各请求之间所允许的超时期限
超时期限(以分钟为单位)

SessionID

获取用于标识会话的唯一会话ID
会话ID

方 法

说 明
Add
新增一个Session对象
Clear
清除会话状态中的所有值
Remove
删除会话状态集合中的项
RemoveAll
清除所有会话状态值
Session.Add("变量名",变量值);

在具体应用中,可以这样使用:

int userId = 1;

string userName = "test";

string userPwd = "sdgtrertkl";

Session.Add("userId",userId);

Session.Add("userName", userName);

Session.Add("userPwd", userPwd);

在上面例子中创建了userId,userName,userPwd三个Session来存储用户的登录信息。程序随时都可以通过这三个Session对象来查看用户的连接状态,这是实际的项目中最常见的Session应用。
需要注意的是,也可以不使用Add方法来设置Session对象,语法如下:

Session["变量名"]=变量值;

这样,上面的例子就可以改为:

Session["userId"] = userId;

Session["userName"] = userName;

Session["userPwd"] = userPwd;

Session即会话,是指一个用户在一段时间内对某一个站点的一次访问。

Session对象在.NET中对应HttpSessionState类,表示“会话状态”,可以保存与当前用户会话相关的信息。

Session对象用于存储从一个用户开始访问某个特定的aspx的页面起,到用户离开为止,特定的用户会话所需要的信息。用户在应用程序的页面切换时,Session对象的变量不会被清除。

对于一个Web应用程序而言,所有用户访问到的Application对象的内容是完全一样的;而不同用户会话访问到的Session对象的内容则各不相同。 Session可以保存变量,该变量只能供一个用户使用,也就是说,每一个网页浏览者都有自己的Session对象变量,即Session对象具有唯一性。

(1)将新的项添加到会话状态中

语法格式为:

Session ("键名") = 值

或者

Session.Add( "键名" , 值)

(2)按名称获取会话状态中的值

语法格式为:

变量 = Session ("键名")

或者

变量 = Session.Item("键名")

(3)删除会话状态集合中的项

语法格式为:

Session.Remove("键名")

(4)清除会话状态中的所有值

语法格式为:

Session.RemoveAll()

或者

Session.Clear()

(5)取消当前会话

语法格式为:

Session.Abandon()

(6)设置会话状态的超时期限,以分钟为单位。

语法格式为:

Session.TimeOut = 数值

Global.asax 文件中有2个事件应用于Session对象

事件名称 说明

Session_Start 在会话启动时激发

Session_End 在会话结束时激发

eg:

string userName;

if(Session["UserName"]!=null)

{

//当指定名称的Session存在时,获取指定Session的值

userName=(string)Session["UserName"];

}

六..Cookie对象

属 性

说 明
属 性 值
Name

获取或设置Cookie的名称

Cookie的名称

Value

获取或设置Cookie的Value

Cookie的Value

Expires

获取或设置Cookie的过期日期和时间

作为DateTime实例的Cookie过期日期和时间

Version

获取或设置此Cookie符合的HTTP状态维护版本

此Cookie符合的HTTP状态维护版本

方 法

说 明
Add
新增一个Cookie变量
Clear
清除Cookie集合内的变量
Get
通过变量名或索引得到Cookie的变量值
GetKey
以索引值来获取Cookie的变量名称
Remove
通过Cookie变量名来删除Cookie变量
Cookie跟Session、Application类似,也是用来保存相关信息,但Cookie和其他对象的最大不同是,Cookie将信息保存在客户端,而Session和Application是保存在服务器端。也就是说,无论何时用户连接到服务器,Web站点都可以访问cookie信息。这样,既方便用户的使用,也方便了网站对用户的管理。
ASP.NET包含两个内部Cookie集合。通过HttpRequest的Cookies集合访问的集合包含通过Cookie标头从客户端传送到服务器的Cookie。通过HttpResponse的Cookies集合访问的集合包含一些新Cookie,这些Cookie在服务器上创建并以Set-Cookie标头的形式传输到客户端。
Cookie不是Page类的子类,所以在使用方法上跟Seesion和Application不同。
使用Cookie的优点:
— 可配置到期规则。Cookie 可以在浏览器会话结束时到期,或者可以在客户端计算机上无限期存在,这取决于客户端的到期规则。
— 不需要任何服务器资源。Cookie存储在客户端并在发送后由服务器读取。
— 简单性。Cookie是一种基于文本的轻量结构,包含简单的键值对。
— 数据持久性。虽然客户端计算机上Cookie的持续时间取决于客户端上的Cookie过期处理和用户干预,Cookie通常是客户端上持续时间最长的数据保留形式。
使用Cookie的缺点:
— 大小受到限制。大多数浏览器对Cookie的大小有4096字节的限制,尽管在当今新的浏览器和客户端设备版本中,支持8192字节的Cookie大小已越发常见。
— 用户配置为禁用。有些用户禁用了浏览器或客户端设备接收Cookie的能力,因此限制了这一功能。
— 潜在的安全风险。Cookie可能会被篡改。用户可能会操纵其计算机上的Cookie,这意味着会对安全性造成潜在风险,或者导致依赖于Cookie的应用程序失败。另外,虽然Cookie只能将它们发送到客户端的域访问,历史上黑客已经发现从用户计算机上的其他域访问Cookie的方法。可以手动加密和解密Cookie,但这需要额外的编码,并且因为加密和解密需要耗费一定的时间而影响应用程序的性能。
HttpCookie MyCookie = new HttpCookie("LastVisit");

DateTime now = DateTime.Now;

MyCookie.Value = now.ToString();

MyCookie.Expires = now.AddHours(1);

Response.Cookies.Add(MyCookie);


七..Application对象

属 性

说 明
属 性 值
AllKeys

获取HttpApplicationState集合中的访问键

HttpApplicationState对象名的字符串数组

Count

获取HttpApplicationState集合中的对象数

集合中的Item对象数。默认为0

方 法
说 明
Add

新增一个新的Application对象变量

Clear

清除全部的Application对象变量

Get

使用索引关键字或变数名称得到变量值

GetKey

使用索引关键字來获取变量名称

Lock

锁定全部的Application变量

Remove

使用变量名称删除一个Application对象

RemoveAll

删除全部的Application对象变量

Set

使用变量名更新一个Application对象变量的內容

UnLock

解除锁定的Application变量

语法:

Application("变量名")="变量值"

代码如下:

void Page_Load(object sender, System.EventArgs e)

{

Application.Add("App1","Value1");

Application.Add("App2","Value2");

Application.Add("App3","Value3");

int N;

for(N=0;N<Application.Count;N++)

{

Response.Write("变量名:"+ Application.GetKey(N));

Response.Write("变量值:"+ Application.Get(N) +"<br>");

}

Application.Clear();

}

在本例中,首先通过Add方法添加三个Application对象,并赋以初值,接着通过Count属性得到Application对象的数量,然后通过循环操作GetKey方法和Get方法分别得到新增对象的“索引”和“索引”所对应的“值”。
执行上面代码,得到如下结果:
变量名:App1变量值:Value1
变量名:App2变量值:Value2
变量名:App3变量值:Value3
实例14-8:Application对象的加锁与解锁
Lock方法可以阻止其他客户修改存储在Application对象中的变量,以确保在同一时刻仅有一个客户可修改和存取Application变量。如果用户没有明确调用Unlock方法,则服务器将在页面文件结束或超时即可解除对Application对象的锁定。
Unlock方法可以使其他客户端在使用Lock方法锁住Application对象后,修改存储在该对象中的变量。如果未显式地调用该方法,Web服务器将在页面文件结束或超时后解锁Application对象。
使用方法如下:

Application.Lock();

Application["变量名"]="变量值";

Application.UnLock();

八..Cache对象

属 性

说 明
属 性 值
Count

获取存储在缓存中的项数。当监视应用程序性能或使用ASP.NET跟踪功能时,此属性可能非常有用
存储在缓存中的项数

Item

获取或设置指定键处的缓存项
表示缓存项的键的String对象

方 法
说 明
Add

将指定项添加到 Cache 对象,该对象具有依赖项、过期和优先级策略,以及一个委托(可用于在从 Cache
移除插入项时通知应用程序)
Get

从 Cache 对象检索指定项
Remove

从应用程序的 Cache 对象移除指定项
Insert

向Cache对象插入项。使用此方法的某一版本改写具有相同key参数的现有Cache项
Get方法可以从Cache对象检索指定项,其唯一的参数key表示要检索的缓存项的标识符。该方法返回检索到的缓存项,未找到该键时为空引用。
下面的示例展示如何检索为ASP.NET文本框服务器控件缓存的值。

Cache.Get("MyTextBox.Value");

实例14-20:移除Cache对象
Remove方法可以从应用程序的Cache对象移除指定项,其唯一的参数key表示要移除的缓存项的String标识符。该方法返回从Cache移除的项。如果未找到键参数中的值,则返回空引用。
下面的示例创建一个RemoveItemFromCache函数。调用此函数时,它使用Item属性检查缓存中是否包含与Key1键值相关的对象。如果包含,则调用Remove方法来移除该对象。

public void RemoveItemFromCache(Object sender, EventArgs e)

{

if(Cache["Key1"] != null)

Cache.Remove("Key1");

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: