关于Web系统引用js或其他文件路径读取的问题

1.问题讨论 

 

   我们在开发web应用程序的时候会涉及js/css/handle/image/其他附件读取的问题。

 

   当我们在当前页面引用js/css/image等文件的时候有下以引用方式 

   (如果是后台读取文件的路径有很多方法如Server.MapPath ,HttpContext.Current.Request.ApplicationPath

这里不作讨论。)

 

/   引用js 的网站根目录

./  引用js 的目录的 当前目录

../ 上级目录

 

    同时我们也可以在当前页中引用了一个js 文件 这个文件也包含了其他的页面的连接(如:本人的一个CommonPop.js里面就写了一个系统中所有的弹窗的方法和弹出框的链接内容。)

 


   这样我们初始化CommPop.Url这个值的时候就可以给定根目录的值(本地的IIS或是VS虚拟IIS就可以用””空值来代替因为他没写应用名)

 

 

   但是我们在IIS 配置中设置了虚拟目录和虚拟名称 (我这里是定义的应用名称是Codetest)

在 /读取 根目录的时候就是没带这个虚拟目录所以 

我们在后台的 HttpContext.Current.Request.ApplicationPath;(读取ASP.NET根目录)

读出应用名称实现根目录读取的方法

不然就是缺少这个应用名称页面会找不到文件404 错误:

如下图;

 


2.实例说明

上面是我们问题描述可能 说的有点笼统,以下举例说明我们先建个解决方案

 

 


 

目录结构

 

1.方式一 我们先用最老土的方法直接在页面里写js 脚本

 


这里我们的页面 方式一直接引用.aspx 对应 WebForm2.aspx (本目录)

WebForm1(下级目录)结果是

 




可以打开的 

上了IIS后 就

 


 


可以打开

但是我们看到  IIS上多了个CodeTest/这样一个路径。

 

2.方式二脚本引用

这里就碰到了我们实际上的问题了

就是我们把 window.open这个函数写到一个js文件里

就是一个主页面再去加载一个js 文件再里面打开一个路径的话他是用他”引用的js 的页面作为根基础的”,所以我们会碰到一个问题就是一个js 中引用了一个页面的路径,结果好多页面都引用这个js 如果是同一级的文件还好,要是不同级别的 不就囧了?

 

 


我这里 打开了弹窗4

 


 

webForm4打开也是引用JScript3.js

那它就会找webForm4.aspx

 


   看他就找当前的路径就找不到这个文件报404错误了

所以我这里就用(ASP.Net的根目录来做基础对应用的文件都做绝对路径的引用)

实际应用上就要推荐用绝对路径来实现引用。

 

3.关于根目录读取.aspx

 



本地可以打开

但是上了IIS

 



 

仔细观察后发现正好少了codetest的应用名称如果补上就正常了,所以我思考在解决问题这个方法,看了网上用以下方式来实现

 



但是觉得不太好,不知大侠们有什么可以指点一二的?

用Server.MapPath ,HttpContext.Current.Request.ApplicationPath 写后台代码块只能实现.aspx页面的根引用,但是js 文件无法识别代码块。

下载源码

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值