Url相对路径的问题总结

 更新时间:2012年11月01日 21:59:32   作者:  
很多时候,我们在图片或者其他(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"

相关文章

  • C#使用whisper.net实现语音识别功能

    C#使用whisper.net实现语音识别功能

    这篇文章主要为大家详细介绍了C#如何使用whisper.net实现语音识别功能,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以学习一下
    2023-11-11
  • C#简单实现文件上传功能

    C#简单实现文件上传功能

    这篇文章主要介绍了C#简单实现文件上传功能,利用MVC+EF+LigerUI 实现的upload上传功能,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • C#中的命名空间详解(Namespace)

    C#中的命名空间详解(Namespace)

    文章介绍了命名空间在C#编程中的作用,包括命名空间的定义与使用、using关键字的使用以及嵌套命名空间的实现,通过这些机制,开发者可以有效地组织和隔离代码,避免命名冲突,提高代码的可读性和可维护性
    2024-12-12
  • C# SQLite序列操作实现方法详解

    C# SQLite序列操作实现方法详解

    这篇文章主要介绍了C# SQLite序列操作实现方法,结合实例形式详细分析了C#实现SQLite序列操作的具体步骤与相关操作技巧,需要的朋友可以参考下
    2017-07-07
  • c#实现适配器模式的项目实践

    c#实现适配器模式的项目实践

    适配器模式将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作,本文主要介绍了c#实现适配器模式的项目实践,感兴趣的可以一起来了解一下
    2023-08-08
  • c# 异步编程入门

    c# 异步编程入门

    这篇文章主要介绍了c# 异步编程入门的相关资料,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-03-03
  • C#通过rabbitmq实现定时任务(延时队列)

    C#通过rabbitmq实现定时任务(延时队列)

    工作中经常会有定时任务的需求,常见的做法可以使用Timer、Quartz、Hangfire等组件,本文使用C#通过rabbitmq实现定时任务(延时队列),感兴趣的可以了解一下
    2021-05-05
  • C#自定义DataGridViewColumn显示TreeView

    C#自定义DataGridViewColumn显示TreeView

    我们可以自定义DataGridView的DataGridViewColumn来实现自定义的列,下面介绍一下如何通过扩展DataGridViewColumn来实现一个TreeViewColumn
    2015-12-12
  • C#中事件处理的个人体会

    C#中事件处理的个人体会

    C#中事件处理的个人体会...
    2007-03-03
  • C#使⽤XmlReader和XmlWriter操作XML⽂件

    C#使⽤XmlReader和XmlWriter操作XML⽂件

    这篇文章介绍了C#使⽤XmlReader和XmlWriter操作XML⽂件的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06

最新评论