日期:2014-05-18  浏览次数:20539 次

路径问题请教
Server.MapPath( "/MyWebSite ");
返回包含指定网站的虚拟目录的物理路径。若要读取代码隐藏模块中的   MapPath,请使用   HttpContext.Current.Server.MapPath。  

以上的话来自于MSDN,请问一下
1   什么叫代码隐藏模块?
2   什么时候用Server.MapPath,什么时候用HttpContext.Current.Server.MapPath
3   一般大家在开发时,使用什么来获取虚拟目录的物理路径阿?

谢谢:)

------解决方案--------------------
1 什么叫代码隐藏模块?
2 什么时候用Server.MapPath,什么时候用HttpContext.Current.Server.MapPath
3 一般大家在开发时,使用什么来获取虚拟目录的物理路径阿?

1.服务器控件中的代码也叫代码隐藏模块
2.一般在页面上使用的时候使用第一种。在自定义服务器控件中的话使用第二种。
3.Server.MapPath();使用不多。
------解决方案--------------------
1.代码调用的dll需要调用路径,如:自定义控件
2.物理路径和虚拟路径的区别吧
3.用../../
以上为个人见解,不确定
------解决方案--------------------
1.代码隐藏模块?
就是你定义一个继承与Page的类里的代码吧
2.一般在.aspx页面的类里(.aspx.cs)使用Server.MapPath;在继承与Page的类里(.cs)使用HttpContext.Current.Server.MapPath,因为这个类没有页面的实力化,不能指定到具体的页面,其实Server.MapPath的全写应该是this.Page.Server.MapPath,一个是通过对象调用(this),一个是类调用(HttpContext.Current,(当前页面)),因为使用HttpContext.Current的时候,Page类一般还没有被实力化。
3.在页面的类里一般使用Server.MapPath,在自定义页面的基类里使用HttpContext.Current.Server.MapPath
------解决方案--------------------
搂主出来接分撒
------解决方案--------------------
不是继承Page 的
------解决方案--------------------
标记,学习,看楼上说的都不是很清楚,还是迷茫

我的感觉就是,直接页面的cs里,用server.mappath( ". ").......

在app_code里的代码里使用 HttpContext.Current.Server.MapPath

其他的不清楚了,
------解决方案--------------------
因为非页面类是不继承于Page 的,当被页面一级调用时被认为是隐藏模块,因不继承自Page 所以要取得上下文就只有用 获得当前上下文的方法了
------解决方案--------------------
这个应该是翻译的不够好..

什么时候用Server.Mappath()
=============================
在页面的文件中可以直接用,因为Page类有个Server属性返回一个Server对象

什么时候用HttpContext.Current.Server.MapPath
==============================================
在普通的类文件(cs文件中),因为类是不知道它将来会被用于网站中的,所以只有通过上下文才能找到Server对象