易截截图软件、单文件、免安装、纯绿色、仅160KB

ASP.NET将Web站点下的绝对路径转换为虚拟路径

ASP.NET将Web站点下的绝对路径转换为虚拟路径
2009-11-25 10:39
很经常使用到的一个功能,但在在网上却一直没有找到相关的解决方法,今天借着项目应用到的机会写了两个将绝对路径转换为虚拟路径封装好的方法
  将Web站点下的绝对路径转换为相对于指定页面的虚拟路径
  /**//// <summary>
  /// 将Web站点下的绝对路径转换为相对于指定页面的虚拟路径
  /// </summary>
  /// <param name="page">当前页面指针,一般为this</param>
  /// <param name="specifiedPath">绝对路径</param>
  /// <returns>虚拟路径, 型如: ../../</returns>
  public static string ConvertSpecifiedPathToRelativePathForPage(Page page, string specifiedPath)
  {
   // 根目录虚拟路径
   string virtualPath = page.Request.ApplicationPath;
   // 根目录绝对路径
   string pathRooted = HostingEnvironment.MapPath(virtualPath);
   // 页面虚拟路径
   string pageVirtualPath = page.Request.Path;
   if (!Path.IsPathRooted(specifiedPath) || specifiedPath.IndexOf(pathRooted) == -1)
   {
   throw new Exception(string.Format("\"{0}\"是虚拟路径而不是绝对路径!", specifiedPath));
   }
   // 转换成相对路径
   //(测试发现,pathRooted 在 VS2005 自带的服务器跟在IIS下根目录或者虚拟目录运行似乎不一样,
   // 有此地方后面会加"\", 有些则不会, 为保险起见判断一下)
   if (pathRooted.Substring(pathRooted.Length - 1, 1) == "\\")
   {
   specifiedPath = specifiedPath.Replace(pathRooted, "/");
   }
   else
   {
   specifiedPath = specifiedPath.Replace(pathRooted, "");
   }
   string relativePath = specifiedPath.Replace("\\", "/");
   string[] pageNodes = pageVirtualPath.Split('/');
   // 减去最后一个页面和前面一个 "" 值
   int pageNodesCount = pageNodes.Length - 2;
   for (int i = 0; i < pageNodesCount; i++)
   {
   relativePath = "/.." + relativePath;
   }
   if (pageNodesCount > 0)
   {
   // 如果存在 ".." , 则把最前面的 "/" 去掉
   relativePath = relativePath.Substring(1, relativePath.Leng


相关文档:

浅谈ASP.net安全编程

在Web编程过程中,存在着很多安全隐患。比如在以前的ASP版本中,Cookie为访问者和编程者都提供了方便,并没有提供加密的功能。打开IE浏览器,选择“工具”菜单里的“Internet选项”,然后在弹出的对话框里单击“设置”按钮,选择“查看文件”按钮,在弹出的窗口中,就会显示硬盘里 ......

asp.net 生命周期 给控件传值 注意

由于页面控件的事件引起的postback回发(比如点击事件)处理程序发生在用户控件初始化事件(onload)之后,所以要想通过点击事件处理函数来传递值到用户控件,必须要在页面的onload中传值 if(!page.IsPostBack) { 页面初始化:// } else {        传递参数到用户控件处理程序() ......

asp.net静态化html时不输出__VIEWSTATE

 protected override void Render(HtmlTextWriter writer)
    { 
        StringWriter sw = new StringWriter();           
        HtmlTextWriter htm ......

asp.net中多行文本框高度自适应内容的问题

 在网上搜查了很久,关于asp.net中多行文本框高度自适应内容的解决方法
<td style="width:700px" align=center valign=top>
        <asp:TextBox runat="server" ID="txtContent" Width=100% ReadOnly=true  Wrap=true TextMode="MultiLine" MaxLength="1073741823" BorderWidt ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号