asp.net - 画面 - マスターページ サンプル




ASP.Netマスタページとファイルパスの問題 (7)

<base> HTMLタグを使うこともできます:

<base href="http://www.domain.com"></base>  

ヘッダーセクションのすべてのリンクはベースアドレスからの相対値です。

<script type="text/javascript" src="scripts/jquery.js"></script>

これは、ローカルのWebサーバー、デモサーバーなど、複数の公開先がある場合に便利です。その基本URLを置き換えるだけです。

私は任意のページで動作するように、マスターページのjQueryへのスクリプト参照を追加しようとしています。 現在、このようになっています

<script type="text/javascript" src="jquery.js"></script>

問題は、パスが実行中のaspxページと常に相対的であるため、 "jquery.js"ファイルが同じフォルダにある場合にのみ機能するためです。 それを動作させるには、次の行に変更する必要があります:

<script type="text/javascript" src="../../jquery.js"></script>

これは明らかに理想的ではありません。なぜなら、ルートフォルダから2つの深さのページに対してのみ機能するからです。 私が次のことを試すと、IISは予期しない文字についてエラーを投げます。

<script runat="server" type="text/javascript" src="~/jquery.js"></script>

何か案は?

編集:私は言及することを忘れても、スクリプトは頭のタグにする必要があります

現在のトップアンサーは、「 ASP.NET Ajaxクライアント側フレームワークの読み込みに失敗しました 」というエラーをスローします。これをマスターページに追加するとエラーが発生します。 それはjavascriptから投げられ、.Netコンパイラからは投げられません。 ScriptManagerをheadセクションに移動すると、Formタグの内部にあるScriptManagerに関するコンパイルエラーが発生します。

3番目の答えは、 " パスの不正な文字 "をスローします。コンパイラの例外

編集2:その行を私の頭のタグに追加すると、IISからこのエラーが出ます。

コントロールにコードブロック(<%...%>)が含まれているため、Controlsコレクションを変更できません

解決済み:以下の答えから編集した応答を取り出しasp:ContentPlaceHolder要素の中に入れました


ルート "/"を実行する方法を見てください。 これは未解決の.jsファイルパスに関するすべての問題を修正するはずです。 基本的にlocalhost:port/application name/作成名前解決とは対照的に、アプリケーションをlocalhost:port/として実行するようにVS Devサーバーを再構成するのは、IISと同じです。


あなたの問題に対する解決策を見つけたかどうかはわかりません。 私は同じ問題に直面していたし、なぜ私は使用しているプラ​​グインで "jQueryが未定義です"というエラーが出るのか理解していない。 私はインターネットから得たすべてのソリューションを試しましたが、運は全くありませんでした。

しかし、突然、スクリプトファイルであるかもしれない何かが私の心に飛び散ってしまいます。 だから、私は最初の位置にjqueryの審判を移動し、すべての魅力のように動作し始めます。

皆さん、jqueryでプラグインを使用している場合は、それらのファイルへの参照を設定する手順を必ず順守してください。

  1. jqueryライブラリへの参照
  2. 他の後続のプラグインライブラリへの参照など...

例えば:

  1. "script src =" js / jquery-1.3.2.min.js "type =" text / javascript "...
  2. "script src =" js / jqDnR.min.js "type =" text / javascript "...
  3. "script src =" js / jquery.jqpopup.min.js "type =" text / javascript "...
  4. "script src =" js / jquery.bgiframe.min.js "type =" text / javascript "...

最初にjqueryの参照を入れてから、その後のライブラリを置く必要があることを常に確認してください。

希望すると、これは特にMasterPagesで使用するときの問題を解決します。 マスターページを使用していないときにどのような順序で使用しても問題なく動作するのは非常に奇妙です。

幸運と幸せなコーディング、

ヴィンセント・ドゥーザ


あなたはScriptManager使うことができます:

<asp:ScriptManager ID="ScriptManager1" runat="server">
    <Scripts>
        <asp:ScriptReference Path="~/jquery.js" />
    </Scripts>
</asp:ScriptManager>

編集:あなたは<head>セクションでこれが絶対に必要な場合は、次のようなことができます:

<head>
    <script type="text/javascript" 
        src="<%= Page.ResolveClientUrl("~/jquery.js") %>"></script>
</head>

編集2:コメントによると、あなたがそれを観察している場合

コントロールにコードブロック(<%...%>)が含まれているため、Controlsコレクションを変更できません

データバインディング構文を使用するには、上記を変更する必要があります。

<head>
    <script type="text/javascript" 
        src="<%# Page.ResolveClientUrl("~/jquery.js") %>"></script>
</head>

どのページのファイルの絶対パスでも、次のように使用します。

<script type="text/javascript" src="<%= Page.ResolveClientUrl("~/jquery.js") %>"></script> 

ヘッドセクションの下のマスターページで<%=代わりに<%#試してください

<script type="text/javascript" 
        src="<%# ResolveUrl("~/YourScriptFolder/YourJQueryOrJavascript.js") %>">
</script>

その後、 Page_Loadイベントのマスターページのコードビハインドで

Page.Header.DataBind();

今は、CSS、JavaScript、jQueryを扱うファイルをResolveUrlで変更する必要があるだけでなく、jQueryとJavaScriptだけでなく、CSSを使うこともできます。


<script type="text/javascript" src="/full/path/to/jquery.js"></script>




runatserver