![ASP.NET从入门到精通(第5版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/771/27111771/b_27111771.jpg)
2.6 Server对象
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P60_14745.jpg?sign=1738891261-wT04PQHhVEN3EA5WWaxa9rwZpTwvXF07-0-46254229b8f57a19c7ffe482ce07e6de)
视频讲解
2.6.1 Server对象概述
Server对象定义了一个与Web服务器相关的类,提供对服务器上的方法和属性的访问,用于访问服务器上的资源。
2.6.2 Server对象的常用属性和方法
Server对象的常用属性及说明如表2.16所示。
表2.16 Server对象的常用属性及说明
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-T61_12019.jpg?sign=1738891261-azn1DjEW7gRt5QZyhEp0TS3L8S5RTZGr-0-f8ca572cb7b0a28e2b25b388b65619cf)
Server对象的常用方法及说明如表2.17所示。
表2.17 Server对象的常用方法及说明
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-T61_12021.jpg?sign=1738891261-GsgOJD4xUolHht6R0GDxo7wCqXm2LrIm-0-f19857b0ffc0515c91ce0ade7e49836b)
2.6.3 使用Server.Execute方法和Server.Transfer方法重定向页面
Execute方法用于将执行从当前页面转移到另一个页面,并将执行返回到当前页面。执行所转移的页面在同一浏览器窗口中执行,然后原始页面继续执行。故执行Execute方法后,原始页面保留控制权。
而Transfer方法用于将执行完全转移到指定页面。与Execute方法不同,执行该方法时主调页面将失去控制权。
【例2.10】重定向页面。(示例位置:mr\TM\02\10)
下面的示例实现的主要功能是通过Server对象的Execute方法和Transfer方法重定向页面。执行程序,单击“Execute方法”按钮,示例运行结果如图2.11所示;单击“Transfer方法”按钮,示例运行结果如图2.12所示。
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P61_12014.jpg?sign=1738891261-ugbCcveUoQKJW953EfkpVtDANadN9vFH-0-97ec27b90020784faa206f85fa75b10a)
图2.11 单击“Execute方法”按钮示例运行结果
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P61_12015.jpg?sign=1738891261-48QhQzTe40Rb1PgLllgWbhmb9oyCTEGV-0-ae016d5dc9c981c56bac41b7e888223e)
图2.12 单击“Transfer方法”按钮示例运行结果
程序实现的主要步骤如下。
(1)新建一个网站,默认主页为Default.aspx,在Default.aspx页面上添加2个Button控件,它们的属性设置如表2.18所示。
表2.18 Default.aspx页面中控件的属性设置及用途
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-T62_14886.jpg?sign=1738891261-ll0ode0yUv2XMnoNNBFyi356S0y5ONaf-0-3a405c13ce8dbbff78ece67eca468afa)
(2)单击“Execute方法”按钮,利用Server对象的Execute方法从Default.aspx页重定向到newPage.aspx页,然后控制权返回到主调页面(Default.aspx)并执行其他操作。代码如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P62_86440.jpg?sign=1738891261-doPXrSv6RRjlfkDylAQK9sgeBKJMOSP7-0-fe3b922bf3fccf807221190d571affbc)
(3)单击“Transfer方法”按钮,利用Server对象的Transfer方法从Default.aspx页重定向到newPage.aspx页,控制权完全转移到newPage.aspx页。代码如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P62_86441.jpg?sign=1738891261-4wpgb7btSZO0Q84gtai2CByf4WIxO6bv-0-0a8623ea0a4200803683596b650f611c)
2.6.4 使用Server.MapPath方法获取服务器的物理地址
MapPath方法用来返回与Web服务器上的指定虚拟路径相对应的物理文件路径。语法如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P62_86442.jpg?sign=1738891261-fRr7MSiX0Q0K3YVquktcmmtBoBBKDVm8-0-3ffc6ef5574f1f65495b9c447ac32540)
其中,path表示Web服务器上的虚拟路径,如果path值为空,则该方法返回包含当前应用程序的完整物理路径。例如,下面的示例是在浏览器中输出指定文件Default.aspx的物理文件路径。
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P62_86443.jpg?sign=1738891261-4LzOpm43B2iwD7AgDtd46MnNHBTIzWMd-0-1aa8bb65757e763e86f44db287a68bd2)
技巧
可以使用Server.MapPath(".")获取当前目录所在服务器的物理路径。
2.6.5 使用Server.UrlEncode方法对字符串进行编码
Server对象的UrlEncode方法用于对通过URL传递到服务器的数据进行编码。语法如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P63_86447.jpg?sign=1738891261-5AAIz0G8QfjIgi7K5JYtxlGV1GAttsS2-0-ebf0ddb2c956dc2aec922af20cbff5b2)
其中,string为需要进行编码的数据。例如:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P63_86448.jpg?sign=1738891261-tyiNT1fDTyqiz57sbYBQrgqpQ91yIQ4m-0-e562123d3bcd9406143ae670fe02ab9b)
编码后的输出结果为:http%3a%2f%2fDefault.aspx。
Server对象的UrlEncode方法的编码规则如下:
- ☑ 空格将被加号“+”字符所代替。
- ☑ 字段不被编码。
- ☑ 字段名将被指定为关联的字段值。
- ☑ 非ASCII字符将被转义码所替代。
2.6.6 使用Server.UrlDecode方法对字符串进行解码
UrlDecode方法用来对字符串进行URL解码并返回已解码的字符串。例如:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P63_86451.jpg?sign=1738891261-1OzwHrPwmkIW5SoMEagOptkJ3LTmew6M-0-43f8436ceb9242015c8b4ad6d3b704d9)
解码后的输出结果为http://Default.aspx。
技巧
如何解决Response.Redirec方法传递汉字丢失或乱码问题?
使用Response.Redirec方法传递汉字时,有时会发现传递的内容与接收的内容不一致,接收到的值丢失了几个字或乱码。怎样才能解决呢?
为了确保传递的汉字可以被正确地接收,可以在传值之前使用Server对象的UrlEncode方法对所传递的汉字进行URL编码。代码如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P63_90519.jpg?sign=1738891261-M9lYgrYihvqwY0iJRHap4iVflDhjZWal-0-411fcebf53c3983597475cc5f457fc77)
接收值时,使用Server对象的UrlDecode方法对所接收的汉字进行URL解码。代码如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P63_90521.jpg?sign=1738891261-jwHxVapeOAMYxQd09gl5cMNda7iM5yCj-0-31c711c3eb677440df6746cf66d32da6)