当前位置:  编程技术>.net/c#/asp.net

asp.net将绝对路径转换为虚拟路径的代码举例

    来源: 互联网  发布时间:2014-08-30

    本文导语:  本文给出的代码,实现如下功能: 将Web站点下的绝对路径转换为相对于指定页面的虚拟路径。 代码如下: /// /// 将Web站点下的绝对路径转换为相对于指定页面的虚拟路径 /// /// 当前页面指针,一般为this /// 绝对路径 /// ...

本文给出的代码,实现如下功能:
将Web站点下的绝对路径转换为相对于指定页面的虚拟路径。

代码如下:

/// 
/// 将Web站点下的绝对路径转换为相对于指定页面的虚拟路径
/// 
/// 当前页面指针,一般为this
/// 绝对路径
/// 虚拟路径, 型如: http://www./
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.Length - 1);
    }

    return relativePath;
}

方法法二,显然是从第一个方法中的前部分抽取出来的。

方法二,
将Web站点下的绝对路径转换为虚拟路径

/// 
/// 将Web站点下的绝对路径转换为虚拟路径
/// 注:非Web站点下的则不转换
/// 
/// 当前页面指针,一般为this
/// 绝对路径
/// 虚拟路径, 型如: ~/
public static string ConvertSpecifiedPathToRelativePath(Page page, string specifiedPath)

{
    string virtualPath = page.Request.ApplicationPath;

    string pathRooted = HostingEnvironment.MapPath(virtualPath);

    if (!Path.IsPathRooted(specifiedPath) specifiedPath.IndexOf(pathRooted) == -1)
    {
        return specifiedPath;
    }

    if (pathRooted.Substring(pathRooted.Length - 1, 1) == "\")
    {
        specifiedPath = specifiedPath.Replace(pathRooted, "~/");
    }
    else
    {
        specifiedPath = specifiedPath.Replace(pathRooted, "~");
}
   string relativePath = specifiedPath.Replace("\", "/");
    return relativePath;
}

另外,虚拟路径转绝对路的话,直接使用HttpRequest.MapPath方法即可。


    
 
 

您可能感兴趣的文章:

  • 请问在jsp中有没有类似于asp中的server.Mappath获得绝对路径的方法啊?
  • asp.net获取网站目录物理路径
  • asp.net获取网站目录物理路径示例
  • asp.net 正则表达式匹配图片路径的实现代码
  • ASP.NET MasterPage中图片路径的解决办法
  • asp.net获取网站绝对路径示例
  • asp.net访问网络路径方法(模拟用户登录)
  • asp.net获取HTML表单File中的路径的方法
  • ASP.NET对路径xxxxx的访问被拒绝的解决方法
  • asp.net Cookie用法举例
  • asp.net使用URLRewriter.dll进行重写的方法举例
  • asp中的replace可以替换掉掉变量字符串中的字符,在jsp中用什么?请举例.
  • asp批量更新sql语句举例
  • asp.net 多文件上传的代码举例
  • asp.net中viewstate 回发机制应用举例
  • asp.net+jquery无刷新三级联动的代码举例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • asp.net字符串转换 123456789转换为12-345-6789的3种方法
  • asp转换成jsp
  • asp.net中2, 8, 10, 16进制转换
  • asp.net如何将DataSet转换成josn并输出
  • asp.net DataSet转换成josn并输出示例
  • asp.net转换IP地址与整数的代码
  • Asp.Net中的字符串和HTML十进制编码转换实现代码
  • asp.net 数据类型转换类
  • ASP.NET JSON字符串与实体类的互转换示例代码
  • 从哪里起步,有asp向jsp的转换
  • ASP.NET之 Ajax相关知识介绍及组件图
  • 我想了解一些关于Java怎样与Asp或Asp.net结合方面在未来发展方向的问题?
  • c#/ASP.NET操作cookie(读写)代码示例
  • asp.net UrlEncode对应asp urlencode的处理方法
  • asp.net实例 定义和使用asp:AccessDataSource
  • win2008 r2 服务器环境配置(FTP/ASP/ASP.Net/PHP)
  • asp与asp.net的session共享
  • 如何在unix下发布asp?
  • 怎么让Apache支持Asp?
  • ??谁能把ASP代码改为JSP的
  • Linux平台下哪种方法实现ASP好?
  • ASP和ASP.Net共享Session解决办法
  • 通过socket和asp打交道
  • 犹豫中……,到底是选择ASP,还是JSP?
  • asp 是否 可用applet标签?帮忙!!
  • asp.net判断数据库表是否存在 asp.net修改表名的方法
  • 新人提问:asp+access的程序在linux下怎么改?
  • 用JAVA APPLET做的交互式网页和ASP、PHP做的相比有什么优势呢?
  • asp.net文字水印功能简单代码
  • asp里面可否使用java写的邮件,给30分.
  • asp与Jsp可否在iis中共存的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3