Url相对路径和绝对路径的问题总结
很多時候,我們在圖片或者其他(a標簽,flash)中指定鏈接的時候,我們需要選擇是使用絕對路徑,或者是相對路徑.
最讓人擔心的是,有時候必須使用絕對路徑(如asp.net中的master內容),因為處于開發過程,沒有目標地址,也就無法配置絕對路徑。有時確必須使用相對路徑。
但是相對路徑寫好了,卻存在各種各樣的問題。
今天,我介紹大家兩種不一樣的方法。
首先介紹最簡單的就是HTML5里新增的Base標簽。
我們看它的用法,必須包含在head標簽中。
<head>
<base target="_blank" href="www.Test.com" />
</head>
最重要的是,base標簽配置好以后,瀏覽器將不再使用當前文檔內的相對URL,而使用指定的基本 URL 来解析所有的相对 URL。
看上圖,如果你 的<a>、<img>、<link>、<form> 標簽中的URL為"chamychen.jpg",那么瀏覽器會在鏈接地址時自動在此URL前加上base標簽中指定的href地址,其打開方式也將遵循 Base標簽中設定的target屬性。那么以后,我們可以在master,mvc可以在layout.shtml中設置base標簽,來解決頭疼的絕對 徑路和相對徑路的問題。我們以后,可以把所有的相對徑路,都設置成從網站根目錄下開始。Base中配置網址就可以,解決所有的相對路徑和絕對路徑的問題 了。
針對不支持html5的瀏覽器,其實我們可以使用C#寫幾句代碼,就可以獲取網站根目錄的地址了:
public static string HostUrl()
{
String path = HttpContext.Current.Request.Url.Scheme + "://" +
HttpContext.Current.Request.Url.Authority +
(HttpContext.Current.Request.ApplicationPath
== "/" ? "" : HttpContext.Current.Request.ApplicationPath);
return path;
}
綜上所述:你只需要使用“網址+相對路徑”的方式就能夠處理因相對徑路引發的問題。
如:http://www.Test.com/ab/abc.jpg
可以使用Base標簽:
<head>
<base target="_blank" href="www.Test.com" />
</head>
相對路徑寫成:<img src="ab/abc.jpg"/>
如果使用多C#來支持:則為HostUrl()+"ab/abc.jpg"
更多WEB开发技术请加群:Asp.Net高级群 号码:261882616 博主以及同事和你共同探讨感兴趣的话题。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库