jQuery技术

Asp.net技巧:Asp.net母版的路径问题

字号+ 作者:H5之家 来源:H5之家 2017-09-03 18:00 我要评论( )

Asp.net技巧:Asp.net母版的路径问题

  母版页即为您的网站的其他页面提供模版。母版页允许您为您的web 应用程序中的所有页面(或页面组)创建一致的外观和行为。

  在使用母板或控件时很多人会遇到一个同样的问题,这些被多个不同目录下的页面引用的公共区里,涉及到的相对路径问题。

  Default.master母板在根目录:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Default.master.cs" Inherits="MyWebservice.Default" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">
 
<html xmlns="" >
<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") %>"></script>
或绝对的
<script type="text/javascript" src=\'#\'" ><%=ResolveUrl("~/js/jquery.js") %>"></script>

  你会发现<% %>里的一般是项目路径(绝对带~)。

  另外OA/oa.aspx与index.aspx不同的就是引入母板的地方:

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • jQuery调用Ajax高效缓存:.NET MVC实战

    jQuery调用Ajax高效缓存:.NET MVC实战

    2017-07-18 10:00

  • jQuery 學習心得筆記 (3) ericsk.net

    jQuery 學習心得筆記 (3) ericsk.net

    2017-06-01 11:03

  • Asp.net + Jquery Mobile 项目实战--准备(1)

    Asp.net + Jquery Mobile 项目实战--准备(1)

    2017-05-16 10:01

  • jQuery跨域请求,跨域Post提交数据的方法(.net/SQL技术交流群206656202 入群需注明博客园) -

    jQuery跨域请求,跨域Post提交数据的方法(.net/SQL技术交流群206656

    2017-05-07 10:00

网友点评