3_Server
Server
表示当前页面的服务器对象
是HttpServerUtility类的实例,HttpServerUtility的父类Page
常用方法
1、HtmlEncode();对字符串进行html编码
比如:有字符串是这样的:
string str = "<span style='color: red'>hello world</span><br />";
//前台页面原样输出就得编码,不然Response.write方法就会把它当作html元素输出
str = Server.HtmlEncode(str);//对字符串进行html编码,
//编码之后:<span style='color: red'>hello world</span><br />
Response.Write(str);//在前台页面输出的时候就是原格式
2、HtmlDecode();对字符串进行html解码,解码为html元素
//html编码之后的格式
string str = " < span style = 'color: red'>hello world</span><br />";
str = Server.HtmlDecode(str);//解码//<span style='color: red'>hello world</span><br />
Response.Write(str); //在前台页面输出的时候就是html标签格式
3、UrlEncode();对url编码
string str2 = "One.aspx?name=张三";
str2 = Server.UrlEncode(str2);//对字符串进行html编码
Response.Write(str2);//在前台页面输出的结果:One.aspx%3fname%3d%e5%bc%a0%e4%b8%89
4、UrlEncode();对url编码
string str2 = Server.UrlDecode("One.aspx%3fname%3d%e5%bc%a0%e4%b8%89");//解码
Response.Write(str2); //在前台页面输出的结果:One.aspx?name=张三
4、MapPath();将虚拟路径转换为实际可用的路径
// @"~\Models\test.txt":如果直接这样用相对路径的话,它找不到,
string path = @"~\Models\test.txt";
path = Server.MapPath(path);
5、Transfer();
在服务器端停止对该页的执行(不会把本页面的内容返回给自己,只把url加载的页面返回回来),根据url加载指定的页面,如果是submit提交的请求,地址栏不会变。
地址栏不会发生变化,是因为,这是在服务器端响应返回了一个新页面给客户端,客户端不知道你是一个新页面,而且客户端又是通过submit提交给自己的页面的,但是它会停止对该页面的执行,所以它仅仅只会把新的页面的html返回回去,自己的html不会返回,所以用户不能看到先前的html页面里的元素了。所以通过这个方法使用问号传参数在地址栏不会显示传递的参数
Server.Transfer("~/Models/One.aspx");
6、Execute();
在当前上下文中执行指定的处理程序,服务器端不会停止对该页的执行(会把本页面的内容和url加载的页面返回回来),根据url加载指定的页面。
和Transfer相反,由于服务器端不会停止对该页的执行,所以会将根据url加载指定的页面和自己原来的页面都返回回去,所以用户可以看到之前页面上的内容 。
和Transfer共同点:都是在服务器端实现重定向
Server.Execute("~/Models/One.aspx");
Execute()、Transfer()和Response.Redirect()的区别:
Redirect在客户端进行跳转,跳转地址栏会变化,相当于服务器端给客户端发了一个响应,让客户端自己去访问另一个页面,所以客户端知道要重新定向,
Execute()和Transfer()相当于是在服务器里进行跳转,客户端不知道,所以地址栏不会变,而Execute和Transfer的区别就是一个会停止对当前页面的执行 ,一个会保留对当前页的执行。