Asp.Netマザーボードでのパスの問題
多くの友人がマザーボードやコントロールを使用しているとき、同じ問題に直面しているのは、複数の異なるディレクトリの下のページに参照されている共通の領域で、相対的なパスの問題だと思います.
まず、次の簡単なコードを見てみましょう.
Default.マスターマザーボードはルートディレクトリにあります.
マザーボードと同じディレクトリのページindex.aspx:
index.aspxページではjs/jqueryを見つけることができます.jsファイル.
しかし次のOAディレクトリの下のoa.aspx:
OA/の下にあるので../js/jquery.jsしかし、どのようにこの2つの状況を両立させることができますか?実際にはネストレベルがもっと多いかもしれません.
もちろん、絶対urlを用いる/js/jqueryを用いることも考えられる.jsですが、この方法の問題は「仮想ディレクトリ」の問題で、チーム開発はそれぞれの仮想ディレクトリが異なると、お互いに毎回修正することはできないでしょう.あまり柔軟ではありません.
柔軟性は次のようなダイナミックな方法です.
">
生成されたコードを表示するには、絶対url方式です.
または絶対(アイテムの絶対位置に注意してね)
<%@Page Language="C#"MasterPageFile="~/masterpage/Default.Master"AutoEventWireup="true"CodeBehind="index.aspx.cs"Inherits="MyWebservice.index"Title="トップページ"%>
これはindexです.aspxの.
2つ目はjqueryですjsのパス、
次のように
<%=ResolveUrl("../js/jquery.js") %>">
または絶対的
<%=ResolveUrl("~/js/jquery.js") %>">
<%>>の中の一般的なのはプロジェクトパス(絶対帯~)であることがわかります.
またOA/oa.aspxとindex.aspxの違いは、マザーボードを導入する場所です.
<%@Page Language="C#"MasterPageFile="~/masterpage/Default.Master"AutoEventWireup="true"CodeBehind="oa.aspx.cs"Inherits="MyWebservice.oa.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 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ですが、この方法の問題は「仮想ディレクトリ」の問題で、チーム開発はそれぞれの仮想ディレクトリが異なると、お互いに毎回修正することはできないでしょう.あまり柔軟ではありません.
柔軟性は次のようなダイナミックな方法です.
生成されたコードを表示するには、絶対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の.
2つ目はjqueryですjsのパス、
次のように
または絶対的
<%>>の中の一般的なのはプロジェクトパス(絶対帯~)であることがわかります.
またOA/oa.aspxとindex.aspxの違いは、マザーボードを導入する場所です.
<%@Page Language="C#"MasterPageFile="~/masterpage/Default.Master"AutoEventWireup="true"CodeBehind="oa.aspx.cs"Inherits="MyWebservice.oa.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 http://xcf007.blog.51cto.com/471707/344259