1

これは私がからかわれる痛ましいほど単純な質問かもしれませんが、マスター ページでファイルパスを使用するのに苦労しています。これは、サブディレクトリ内のページがマスターページを使用する場合、ファイルパスが正しくないためだと思います。

これを修正するには、ルートからファイルパスを取得する必要がありますが、うまくいかないようです。

私は試した:

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

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

どちらにも運がありません!

ルートからファイルパスを取得するように指示する方法についてのアイデアはありますか?

4

4 に答える 4

2

ファイルパスで想定しているだけで、実際にはurl(またはuri、どれが部分的か忘れました)を意味します。

~ がなければ、最初の例が機能するはずです。 ブラウザはhttp://www.example.com/jQueryScripts/jquery.js (www.example.com はあなたのドメイン)<script type="text/javascript" src="/jQueryScripts/jquery.js"></script>を要求します。

于 2008-11-12T13:49:55.180 に答える
1

これを回避するには、 Page.ResolveUrlメソッドを使用できます。

例えば:

<script type="text/javascript" src="<%=Page.ResolveUrl("~/jQueryScripts/jquery.js")%>"></script>
于 2008-11-12T14:21:37.830 に答える
1

この URL リベースを機能させるにはrunat=server、 の<head>タグを含める必要があると思います。MasterPage

<head runat="server">
于 2008-11-12T13:59:27.203 に答える
1

まず前のチルダは、サーバー コントロールで使用するための asp.net のものであり、基本的な HTML では機能しません。

詳細な説明に入ることなく、先頭にスラッシュ (/) を使用し、ルート サイトでない場合は Web アプリ名を含めることができます。

または、スクリプトを動的に含めるためのコードをマスター ページに配置し、パスを処理させることもできます。お気に入り:

    public void AddJavascript(string javascriptUrl)
    {   
        HtmlGenericControl script = new HtmlGenericControl("script");
        script.Attributes.Add("type", "text/javascript");
        javascriptUrl += "?v" + Assembly.GetExecutingAssembly().GetName().Version;
        script.Attributes.Add("src", ResolveUrl(javascriptUrl));
        Page.Header.Controls.Add(script);
    }

上記のコードは、アセンブリ バージョンも追加します。これは主に開発に使用するため、ビルドするたびに JavaScript ファイルが更新されます。

于 2008-11-12T14:08:59.273 に答える