前言:在ASP.NET中进场会看到Server属性,那么它到底是什么含义,又该怎么应用呢?下面和大家分享一下Server的属性和应用。
(一)Server属性
方法名 | 属性 |
---|---|
MapPath方法 | 获得文件的物理路径 |
Execute方法和Transfer方法 | 执行另一个页面的脚本 |
HtmlEncode方法和HtmlDecode方法 | 将文本编码成可以在浏览器中正确浏览的格式 |
UrlEncode方法和UrlDecode方法 | URL编码和解码 |
(二)Server(HttpServerUtility)
Server是上下文对象context的一个属性,是HttpServerUtility类的一个对象
1.Server.HtmlDecode()、Server.HtmlEncode()
Server.UrlEncode()、 Server.UrlDecode()是对HttpUtility类中相应方法的一个代理调用。推荐总是使用HttpUtility,因为有的地方很难拿到Server对象,而且Server的存在是为以前ASP程序员习惯而留的。
别把HtmlEncode、UrlEncode混了,UrlEncode是处理超链接中的中文问题, HtmlEncode是处理html代码的。还是推荐用HttpUtility.HtmlEncode。
2.Server.Transfer(path)
内部重定向请求,Server.Transfer(“JieBanRen.aspx”)将用户的请求重定向给JieBanRen.aspx处理,是【服务器内部的接管】(不能重定向到外部网站),浏览器是意识不到这个接管的,不是像Response.Redirect那样经历“通知浏览器‘请重新访问url这个网址’和浏览器接到命令访问新网址的过程”,是一次http请求,因此【浏览器地址栏不会变化】。
因为是内部接管,所以在被重定向到的页面中是可以访问到Request、Cookies等这些来源页面接受的参数的,就像这些参数是传递给他的,而Redirect则不行,因为是让浏览器去访问的。
注意Transfer是内部接管,因此不能像【Redirect那样重定向到外部网站】。
Response.Redirect就可以重定向到外部网站。
不能内部重定向到ashx,否则会报错“执行子请求出错”.
有的时候不能拿到HttpContext对象,比如在Global.asax中(后面讲),可以通过HttpContext.Current拿到当前的HttpContext,进而拿到Response/Request/Server等
Server.MapPath。
总结:多总结,多实践。