国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET將Web站點下的絕對路徑轉(zhuǎn)換為虛擬路徑

2024-07-10 13:10:49
字體:
供稿:網(wǎng)友


收集最實用的網(wǎng)頁特效代碼!

很經(jīng)常使用到的一個功能,但在在網(wǎng)上卻一直沒有找到相關(guān)的解決方法,今天借著項目應(yīng)用到的機會寫了兩個將絕對路徑轉(zhuǎn)換為虛擬路徑封裝好的方法
將web站點下的絕對路徑轉(zhuǎn)換為相對于指定頁面的虛擬路徑
/**//// <summary>
/// 將web站點下的絕對路徑轉(zhuǎn)換為相對于指定頁面的虛擬路徑
/// </summary>
/// <param name="page">當(dāng)前頁面指針,一般為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));
    }

    // 轉(zhuǎn)換成相對路徑
    //(測試發(fā)現(xiàn),pathrooted 在 vs2005 自帶的服務(wù)器跟在iis下根目錄或者虛擬目錄運行似乎不一樣,
    // 有此地方后面會加"/", 有些則不會, 為保險起見判斷一下)
    if (pathrooted.substring(pathrooted.length - 1, 1) == "http://")
    {
        specifiedpath = specifiedpath.replace(pathrooted, "/");
    }
    else
    {
        specifiedpath = specifiedpath.replace(pathrooted, "");
    }

    string relativepath = specifiedpath.replace("http://", "/");

    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;
}

第二個方法顯然是從第一個方法中的前部分抽取出來的,所以懶得去添加相關(guān)注釋 :p
將web站點下的絕對路徑轉(zhuǎn)換為虛擬路徑
/**//// <summary>
/// 將web站點下的絕對路徑轉(zhuǎn)換為虛擬路徑
/// 注:非web站點下的則不轉(zhuǎn)換
/// </summary>
/// <param name="page">當(dāng)前頁面指針,一般為this</param>
/// <param name="specifiedpath">絕對路徑</param>
/// <returns>虛擬路徑, 型如: ~/</returns>
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) == "http://")
    {
        specifiedpath = specifiedpath.replace(pathrooted, "~/");
    }
    else
    {
        specifiedpath = specifiedpath.replace(pathrooted, "~");
    }

    string relativepath = specifiedpath.replace("http://", "/");
    return relativepath;
}

將虛擬路徑轉(zhuǎn)絕對路就沒什么好說的了, httprequest.mappath 方法專門干這事

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 绥滨县| 溧水县| 莆田市| 淳安县| 台东市| 台湾省| 兴国县| 清徐县| 临海市| 西乌| 邻水| 新乐市| 鄱阳县| 广平县| 金秀| 永寿县| 彰化县| 香格里拉县| 崇阳县| 吉水县| 涿州市| 巴南区| 宣城市| 高安市| 江门市| 马关县| 扶风县| 定西市| 彭水| 海南省| 雅安市| 自贡市| 宝山区| 阳泉市| 娄烦县| 常州市| 东丰县| 厦门市| 陈巴尔虎旗| 南川市| 安龙县|