• 締切
  • すぐに回答を!

マスターページでのJavaScrioptファイル

  • 質問No.4963533
  • 閲覧数1201
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 100% (1/1)

マスターページとコンテンツページ(aspxファイル)のディレクトリ階層が異なる場合、マスターページにJavaScriptファイルの指定を行うと、生成された画面のソースを見ると、マスターページからの相対パスになっており、JavaScriptのメソッドを実行できません。
どうすれば、コンテンツページからのパスで生成されるようにできますか?
■階層
root
┗Script
___Script.js
┗マスターページ
___マスターページ.master
┗コンテンツルート
_┗aspxファイル
______コンテンツ.aspx
■マスターページ
<head id="Head1" runat="server">
<script type="text/javascript" src="~/Script/Script.js" charset="Shift_JIS"></script>
</head>
■生成されたhtml
<head id="Head1" runat="server">
<script type="text/javascript" src="../Script/Script.js" charset="Shift_JIS"></script>
</head>
希望しているコード
<script type="text/javascript" src="../../Script/Script.js" charset="Shift_JIS"></script>

回答 (全1件)

  • 回答No.1

ベストアンサー率 69% (344/495)

ASP.NET 2.0で同じようなページ構造にして試してみましたが、相対パスどころか"~/Script..."がそのままブラウザに送られてきました…。
scriptタグはパス変換の対象になっていない様子。
(このあたりは設定等で変更できるかもしれませんが調べてません。)

解決策としては、マスターページのInitイベントでヘッダにscriptタグを追加する方法があります。

VBの場合:
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
Dim tagScript As New HtmlControls.HtmlGenericControl("script")
tagScript.Attributes.Add("type", "text/javascript")
tagScript.Attributes.Add("src", Me.ResolveClientUrl("~/Script/Script.js"))
tagScript.Attributes.Add("charset", "Shift_JIS")
Me.Page.Header.Controls.Add(tagScript)
End Sub

C#の場合:
私はC#書けないので上記コードからC#用に書き換えてください。
お礼コメント
e_zenchan

お礼率 100% (1/1)

ありがとうございました。
教えていただいた方法を参考に
<script type="text/javascript" src='<%= Me.ResolveClientUrl("~/Script/Script.js") %>' charset="Shift_JIS"></script>

マスターページからのパスではなくコンテンツページからのパスで表示することができました。
C# なので Me ではなく、this にしました。
投稿日時:2009/05/21 00:29
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

ピックアップ

ページ先頭へ