Asp.net母板中的路径问题
2010-07-05 16:52
295 查看
我想很多朋友使用母板或控件时遇到一个同样的问题就是,这些被多个不同目录下的页面引用的公共区里,涉及到的相对路径问题。
先看下下面的简单代码:
Default.master母板在根目录:
和母板同一目录的页面index.aspx:
index.aspx页面可以找到js/jquery.js文件。
但是下面的OA目录下的oa.aspx:
因为它在OA/下,所以需要../js/jquery.js但是怎么能兼顾这2种情况呢,实际中兴许嵌套级别更多。
当然了,可能会考虑使用绝对url即用/js/jquery.js,但这个方法的问题就是“虚拟目录”的问题,团队开发如果各自的虚拟目录不一样,相互间总不能每次修改吧,不太灵活。
所以灵活一点就是动态的方式,如下:
<script type="text/javascript" src=\'#\'" /jquery.js") %>"></script>
查看生成的代码都是绝对url方式:
或者绝对(注意是项目绝对位置哦)
<%@ Page Language="C#" MasterPageFile="~/masterpage/Default.Master" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="MyWebservice.index" Title="首页" %>
这是index.aspx的。
第二点需要改的是jquery.js的路径,
如下
<script type="text/javascript" src=\'#\'" ><%=ResolveUrl("../js/jquery.js") %>[/b]"></script>
或绝对的
<script type="text/javascript" src=\'#\'" ><%=ResolveUrl("~/js/jquery.js") %>[/b]"></script>
你会发现<% %>里的一般是项目路径(绝对带~)。
另外OA/oa.aspx与index.aspx不同的就是引入母板的地方:
<%@ Page Language="C#" MasterPageFile="~/masterpage/Default.Master" AutoEventWireup="true" CodeBehind="oa.aspx.cs" Inherits="MyWebservice.oa.oa" Title="在线办公" %>
或者相对(这个注意与index.aspx的区别哦)
<%@ Page Language="C#" MasterPageFile="../masterpage/Default.Master" AutoEventWireup="true" CodeBehind="oa.aspx.cs" Inherits="MyWebservice.oa.oa" Title="在线办公" %>
2.好了上面的页面生成时是绝对URL,
那么相对URL呢。
使用Page.ResolveClientUrl()方法咯,
注意OA/oa.aspx的:
先看下下面的简单代码:
Default.master母板在根目录:
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Default.master.cs" Inherits="MyWebservice.Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>无标题页</title> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){ alert("jQuery.") }); </script> <asp:ContentPlaceHolder ID="head" runat="server"> </asp:ContentPlaceHolder> </head> <body> <form id="form1" runat="server"> <div> <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> </asp:ContentPlaceHolder> </div> </form> </body> </html>
和母板同一目录的页面index.aspx:
<%@ Page Language="C#" MasterPageFile="~/Default.Master" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="MyWebservice.index" Title="首页" %> <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> </asp:Content>
index.aspx页面可以找到js/jquery.js文件。
但是下面的OA目录下的oa.aspx:
<%@ Page Language="C#" MasterPageFile="~/Default.Master" AutoEventWireup="true" CodeBehind="oa.aspx.cs" Inherits="MyWebservice.oa.oa" Title="在线办公" %> <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> </asp:Content>
因为它在OA/下,所以需要../js/jquery.js但是怎么能兼顾这2种情况呢,实际中兴许嵌套级别更多。
当然了,可能会考虑使用绝对url即用/js/jquery.js,但这个方法的问题就是“虚拟目录”的问题,团队开发如果各自的虚拟目录不一样,相互间总不能每次修改吧,不太灵活。
所以灵活一点就是动态的方式,如下:
<script type="text/javascript" src=\'#\'" /jquery.js") %>"></script>
查看生成的代码都是绝对url方式:
<script type="text/javascript" src="/pathtest/js/jquery.js"> 我这里虚拟目录是pathtest. 也可以 <script type="text/javascript" src=\'#\'" /js/jquery.js") %>"></script>
下面做个实验,我们把母板移动下,放到masterpage/文件夹里,看看什么情况,这时候需要主要2点,第一是 页面引master母板需要改: 原来 <%@ Page Language="C#" MasterPageFile="~/Default.Master" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="MyWebservice.index" Title="首页" %>
表示项目根目录下,现在改成: <%@ Page Language="C#" MasterPageFile="masterpage/Default.Master" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="MyWebservice.index" Title="首页" %>
或者绝对(注意是项目绝对位置哦)
<%@ Page Language="C#" MasterPageFile="~/masterpage/Default.Master" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="MyWebservice.index" Title="首页" %>
这是index.aspx的。
第二点需要改的是jquery.js的路径,
如下
<script type="text/javascript" src=\'#\'" ><%=ResolveUrl("../js/jquery.js") %>[/b]"></script>
或绝对的
<script type="text/javascript" src=\'#\'" ><%=ResolveUrl("~/js/jquery.js") %>[/b]"></script>
你会发现<% %>里的一般是项目路径(绝对带~)。
另外OA/oa.aspx与index.aspx不同的就是引入母板的地方:
<%@ Page Language="C#" MasterPageFile="~/masterpage/Default.Master" AutoEventWireup="true" CodeBehind="oa.aspx.cs" Inherits="MyWebservice.oa.oa" Title="在线办公" %>
或者相对(这个注意与index.aspx的区别哦)
<%@ Page Language="C#" MasterPageFile="../masterpage/Default.Master" AutoEventWireup="true" CodeBehind="oa.aspx.cs" Inherits="MyWebservice.oa.oa" Title="在线办公" %>
2.好了上面的页面生成时是绝对URL,
<script type="text/javascript" src="/pathtest/js/jquery.js"></script>
那么相对URL呢。
使用Page.ResolveClientUrl()方法咯,
注意OA/oa.aspx的:
<script type="text/javascript" src="../js/jquery.js"></script> 与index.aspx的区别: <script type="text/javascript" src="js/jquery.js"></script>
看完这篇,请继续看 再谈asp.net的路径 /article/4418532.html
相关文章推荐
- asp.net母版页的路径问题
- ASP.NET中母版页中引用文件路径的问题
- asp.net模板图片路径问题
- 解决asp.net FileUpload控件无法获取完整路径的问题 - 无序修改浏览器参数
- 关于ASP.NET"未能映射路径"问题
- ASP.net 路径问题 详解
- Asp.net URL重定向后css路径问题
- ASP.NET MVC 下 引用阿里巴巴和IconFont字体路径404问题
- asp.net 路径问题
- asp.net 路径问题
- ASP.net 路径问题 详解
- asp.net虚拟主机的路径泄露问题
- asp.net 取路径问题
- asp.net中涉及子文件夹的母版页和相对路径文件引用问题
- ASP.NET 2.0中母版页中引用文件路径的问题(对原处理方法中的bug进行了修改)
- asp.net mvc 发布到IIS测试,路径的引用问题
- asp.net路径问题
- ASP.NET路径的问题
- ASP.net 路径问题 详解
- Asp.Net 2.0连接ACCESS数据库相对路径问题,web.config中如何使用相对路径