ASP.net 路径问题 详解
各位有没有碰到在日常工作中经常在路径设置的时候把 “~/ 、./ 、../ 、 / 、http://www.cnblogs.com/“这些符号搞混搞乱了?偶尔还会因路径的问题郁闷了半天 还以为是程序上出了问题了。以下我是转自–脚本之家 里的一篇技文,略作修改,以备不时只需,各位有需要的也可参考参考,有错的也请各位指出。
比如你的工程是Webapplication1(url是:http://localhost/webapplication1/webform1.aspx)
Request.ApplicationPath 就是/Webapplication1
如果是站点就直接返回”/”;
~/ 可以用在需要设置路径的控件比如:imagebutton,image等 以及链接ascx文件,配置文件.
../ 的好处是可以不知道文件夹的名字知道层次结构就可以了
/ 的好处是针对根路径,如果本地目录和服务器目录一致,那直接用/就可以保证路径正确,这种情况很少.
Request.ApplicationPath 注意如果没有虚拟目录就直接返回/,那你程序里面就不要设置/
比如
Request.ApplicationPath+”/images/a.gif” 如果是站点 就是等于 “//images/a.gif”,错误的
如果有虚拟目录就是 “Webapplication1/images/a.gif”
没有/的
Request.ApplicationPath 发挥虚拟目录名称,如果是站点就返回/
~/ 类似,不过只用服务端的空间可以识别;
/ 针对目录
./ 当前目录
../ 相对当前目录的上层目录
比如你的工程是Webapplication1(url是:http://localhost/webapplication1/webform1.aspx)
Request.ApplicationPath 就是Webapplication1/
~/ 也是 Webapplication1/
/就是http://localhost/
如果webform1.aspx 下有个文件webform2.aspx
你可以在webform1.aspx里这样使用
ddd
或者
或者
ASP.NET 网站路径
使用网站中的资源时,通常必须指定资源的路径。例如,您可以使用 URL 路径引用页面中的图像文件或网站中其他位置处的页面的 URL。同样,Web 应用程序中的代码可以使用基于服务器的文件的物理文件路径对文件进行读写操作。ASP.NET 提供用于引用资源并确定应用程序中的页面或其他资源的路径的方法。
指定资源的路径
许多情况下,页面中的元素或控件必须引用外部资源,如文件。ASP.NET 支持引用外部资源的各种方法。根据您使用的是客户端元素还是 Web 服务器控件,选择的引用方法将有所不同。
客户端元素
客户端元素是页面上的非 Web 服务器控件元素,它们将按原样被传递给浏览器。因此,从客户端元素中引用资源时,应根据 HTML 中 URL 的标准规则构造路径。可以使用完全限定的 URL 路径(又称为绝对 URL 路径),也可以使用各种类型的相对路径。例如,如果页面包含 img 元素,则可以使用以下路径之一设置其 src 属性:
绝对 URL 路径。如果引用其他位置(例如外部网站)中的资源,则绝对 URL 路径非常有用。
网站根目录相对路径,此路径将根据网站根目录(而非应用程序根目录)进行解析。如果将跨应用程序的资源(例如图像或客户端脚本文件)保留在网站根目录下的文件夹中,则网站根目录相对路径非常有用。
此示例路径假定 Images 文件夹位于网站根目录下。
如果您的网站为 http://www.contoso.com,则此路径将解析为以下形式。
http://www.contoso.com/Images/SampleImage.jpg下面是一个根据当前页面路径解析的相对路径。
解析为当前页面路径对等的相对路径。
注意
默认情况下,浏览器使用当前页面的 URL 作为解析相对路径的基准。但是,您可以在页面中包含 HTML base 元素,以指定替代基路径。
服务器控件
在引用资源的 ASP.NET 服务器控件中,可以使用绝对路径或相对路径,这一点与客户端元素一样。如果使用相对路径,则相对于页面、用户控件或包含该控件的主题的路径进行解析。例如,假设 Controls 文件夹中包含一个用户控件。该用户控件包含一个 Image Web 服务器控件,此服务器控件的 ImageUrl 属性被设置为以下路径:Images/SampleImage.jpg。
当该用户控件运行时,上述路径将解析为以下形式:/Controls/Images/SampleImage.jpg。无论承载该用户控件的页面位于何处,结果都是如此。
注意
在主控页中,资源的路径基于内容页的路径进行解析。有关更多信息,请参见 ASP.NET 母版页概述。
服务器控件中的绝对和相对路径引用具有以下缺点:
绝对路径在应用程序之间是不可移植的。如果移动绝对路径指向的应用程序,则链接将会中断。
如果将资源或页面移动到不同的文件夹,可能很难维护采用客户端元素样式的相对路径。
为克服这些缺点,ASP.NET 包括了 Web 应用程序根目录运算符 (~),当您在服务器控件中指定路径时可以使用该运算符。ASP.NET 会将 ~ 运算符解析为当前应用程序的根目录。可以结合使用 ~ 运算符和文件夹来指定基于当前根目录的路径。
下面的示例演示了使用 Image 服务器控件时用于为图像指定根目录相对路径的 ~ 运算符。在此示例中,无论页面位于网站中的什么位置,都将从位于 Web 应用程序根目录下的 Images 文件夹中直接读取图像文件。
ASP.net 路径问题 详解的更多相关文章
- ASP.NET 运行时详解 揭开请求过程神秘面纱
对于ASP.NET开发,排在前五的话题离不开请求生命周期.像什么Cache.身份认证.Role管理.Routing映射,微软到底在请求过程中干了哪些隐秘的事,现在是时候揭晓了.抛开乌云见晴天,接下来就 ...
- 如何利用IIS调试ASP.NET网站程序详解
如何利用IIS调试ASP.NET网站程序详解 更新时间:2019年01月13日 08:44:13 作者:江湖逍遥 我要评论 这篇文章主要给大家介绍了关于如何利用IIS调试ASP.NET网 ...
- ASP.NET 操作Cookie详解 增加,修改,删除
ASP.NET 操作Cookie详解 增加,修改,删除 Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份而储存在用户本地终端上的数据(通常经过加密).定义于RFC2109.它 ...
- ASP.NET运行时详解 集成模式和经典模式
遗留问题 在<ASP.NET运行时详解 生命周期入口分析>中遗留两个问题,包括Application的InitInternal方法执行细节.IIS6和II7经典模式请求管道管理类Appli ...
- ASP.NET生命周期详解
最近一直在学习ASP.NET MVC的生命周期,发现ASP.NET MVC是建立在ASP.NET Framework基础之上的,所以原来对于ASP.NET WebForm中的很多处理流程,如管道事件等 ...
- ASP.NET生命周期详解 [转]
最近一直在学习ASP.NET MVC的生命周期,发现ASP.NET MVC是建立在ASP.NET Framework基础之上的,所以原来对于ASP.NET WebForm中的很多处理流程,如管道事件等 ...
- ASP.NET生命周期详解(转)
看到好文章需要分享. 最近一直在学习ASP.NET MVC的生命周期,发现ASP.NET MVC是建立在ASP.NET Framework基础之上的,所以原来对于ASP.NET WebForm中的很多 ...
- asp.net MVC ViewData详解
转自:http://www.cnblogs.com/gaopin/archive/2012/11/13/2767515.html 控制器向视图中传值ViewData详解 1.将一个字符串传值到视图中 ...
- ASP.NET性能监视参数详解
性能监视器- Performance Monitor 性能监视器是Windows自带的系统资源和性能监视工具. 性能监视器能够量化地提供CPU使用率, 内存分配状况, 异常派发情况, 线程调度频率等信 ...
随机推荐
- 如何在Google上下载高清原图
在我们学习和生活中常常一些高清图片作为相关的素材,比如制作PPT.写博文.制作视频都需要大量图片.我们常常会在百度上下载一些图片,但是百度上提供的图片存在很多问题:存在水印.清晰度不够等.而Googl ...
- 记录一次widora sdk编译ipk 实战编译redis
因为业务需求,需要用到redis存储一点简单的数据,因为redis有良好的哈希机制,可以完美实现我的某些需求,但openwrt官方提供memcached的ipk并没有提供redis,没办法,只能自 ...
- angular+ionic前后端分离开发项目中的使用
Ionic基于AngularJS构建而成,所以学习一些AngularJS的知识很有必要.Ionic并没有独立开发一套完整的Web应用框架,而是对AngularJS进行了扩展,给它添加了大量界面组件和其 ...
- Oracle中的列转行例子详解
数据如下:name id张三 1,2,3 要求实现:name id张三 1张三 2张三 3 --创建临时表 create table tmp as(select '张三' name, '1,2,3' ...
- 干货!一次kafka卡顿事故排查过程
由于一次功能上线后,导致某数据量急剧下滑,给我们紧张的呢!排查过程也是个学习过程(这其中有大部分是领导们的功劳,不过分享给大家应该也不犯法吧,ᐓ) 1. 确认问题的真实性? 被数据部门告知,某数据量下 ...
- Lua热更新时正确设置文件名
Lua热更新时正确设置文件名(金庆的专栏 2016.12)Lua热更新模块见:https://github.com/jinq0123/hotfix其中使用 load(chunk) 来加载更新后的内容, ...
- Device Mapper 代码分析
Device Mapper(DM)是Linux 2.6全面引入的块设备新构架,通过DM可以灵活地管理系统中所有的真实或虚拟的块设备. DM以块设备的形式注册到Linux内核中,凡是挂载(或者说&quo ...
- 360浏览器不能打开CSDN登陆页面
碰见个奇葩问题: 使用360浏览器(广大程序员不要鄙视我~ 我有我的理由)不能打开csdn的登陆页面~~你登陆的时候,他就一直在那里打转~~ 但是用ie就可以打开登陆页面.... 怎么回事???难道C ...
- Android图表库MPAndroidChart(九)——神神秘秘的散点图
Android图表库MPAndroidChart(九)--神神秘秘的散点图 今天所的散点图可能用的人不多,但是也算是图表界的一股清流,我们来看下实际的效果 添加的数据有点少,但是足以表示散点图了,我们 ...
- Thread 方法
Thread类的一些被Thread对象调用的方法: 1 public void start() 使该线程开始执行:Java 虚拟机调用该线程的 run 方法. 2 public void run() ...