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

マスターページとコンテンツページ(aspxファイル)のディレクトリ階層が異なる場合、マスターページにJavaScript...

Wizard_Zero さんからの 回答

  • 2009/05/20 01:22
  • 回答No.1
Wizard_Zero

ベストアンサー率 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
  • Smarty tpl内のifの書き方について PHP

    Smartyを使ったホームページがあり、更新を頼まれています。 サイト内でjavascriptを使用し、ページごとに振り分けをしたいと思い if を使いたいのですが イマイチわかりませんのでアドバイスをお願いします。 ヘッダーテンプレート内の<head></head>内の<script>タグをページとディレクトリに分けたいのですが、 <script type="text/javascript" src="http://www.***.com/data/js/jquery.js" charset="UTF-8"></script> {if ($smarty.server.REQUEST_URI == '/')} <script type="text/javascript" src="http://www.***.com/data/js/*****.js" charset="UTF-8"></script> <script type="text/javascript" src="http://www.***.com/data/js/*****.js" charset="UTF-8"></script> {elseif ($smarty.server.REQUEST_URI == '/guide/')} <script type="text/javascript" src="http://www.***.com/data/js/*****.js" charset="UTF-8"></script> {elseif ($smarty.server.REQUEST_URI == '/contact/')} <script type="text/javascript" src="http://www.***.com/data/js/*****.js" charset="UTF-8"></script> <script type="text/javascript" src="http://www.***.com/data/js/*****.js" charset="UTF-8"></script> {elseif ($smarty.server.REQUEST_URI == '/item/')} <script type="text/javascript" src="http://www.***.com/data/js/*****.js" charset="UTF-8"></script> {else} {/if} と、記述しました。 {if ($smarty.server.REQUEST_URI == '/')} は、トップページにのみ適用。 {elseif ($smarty.server.REQUEST_URI == '/guide/')} は、ガイドフォルダ内に適用。 {elseif ($smarty.server.REQUEST_URI == '/contact/')} は、コンタクトフォルダ内に適用。 {elseif ($smarty.server.REQUEST_URI == '/item/')} は、ガイドフォルダ内に適用。 としたいのですが、どれも ***.com/index.php ***.com/guide/index.php ~には 適用されるものの ***.com/guide/info.php には /guide/としているのに適用されません。 /guide/ は、 ***.com/guide/フォルダ内のページ表示に対しての指示ではないのでしょうか? これらフォルダ内に適用するにはどう言った書き方をすれば宜しいのでしょうか? アドバイスをお願いします。...

  • 【ASP.NET】マスターページに配置されたボタンのイベントを拾いたい Microsoft ASP

    ※こちらの派生です。 http://oshiete1.goo.ne.jp/qa5222698.html マスターページに配置したボタンのクリックイベントを コンテンツページ(?マスターページを使用するページ)で 拾うことは可能でしょうか? もしくは、マスターページに配置したボタンのクリックイベントの処理を コンテンツページで実装することは可能でしょうか? ボタンの配置は同じだけれど、メソッドの中の処理は コンテンツページ毎に分けたいのです。 例えばマスターページ「hoge」とコンテンツページ「moge」があったとすると 以下のような感じです…。 --------------------------------------------------------------------------- ============== hoge.Master ============== <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="hoge.master.cs" Inherits="xxx.hoge" %> <asp:Content ID="Content3" ContentPlaceHolderID="FooterContentPlaceHolder" runat="server"> <asp:Button ID="btn" runat="server" Text="ぼたん" onclick="btn_Click" /> </asp:Content> ============== hoge.Master.cs ============== protected void btn_Click(object sender, EventArgs e) { // ここではなく } ============== moge.aspx ============== <%@ Page Language="C#" MasterPageFile="~/hoge.Master" AutoEventWireup="true" CodeBehind="moge.aspx.cs" Inherits="xxx.moge" Title="もげ" %> ============== moge.aspx.cs ============== protected void btn_Click(object sender, EventArgs e) { // ここにボタンが押された際の処理を実装したい } --------------------------------------------------------------------------- よろしくお願い致します。...

  • JavaScriptでURLを取得送信 JavaScript

    JavaScript初心者です。申し訳ありません。 現在HPを作成しており、別のサーバより本サーバへ 別サーバで、現在閲覧しているページURLをページを開いたと同時に送りたいのですが、 どのようなScriptを組めばよろしいでしょうか? Google等で調べたのですがわかりませんでした。 JavaScriptの初心者なのでどうかご指南ください。 上記文章で不明な部分もあると思いますが、どうかお願いします。...

  • マスターページからコンテンツページのメソッドを実行したい Microsoft ASP

    お世話になります。 マスターページからコンテンツページのメソッドを実行したいです。 よろしくおねがいします。 ********************************** マスタページ:Site1 ********************************** [Site1.Master] <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site1.master.cs" Inherits="Site1" %> <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> </asp:ContentPlaceHolder> [Site1.Master.cs] public partial class Site1 : System.Web.UI.MasterPage { ここで、コンテンツページのメソッドを実行 } ********************************** コンテンツページ:WebForm1 ********************************** [WebForm1.aspx] <%@ Page Language="C#" MasterPageFile="Site1.Master" Codebehind="WebForm1.aspx.cs" Inherits="WebForm1" %> <asp:Content ID="Content1" runat="server" ContentPlaceHolderID="ContentPlaceHolder1"> </asp:Content> [WebForm1.aspx.cs] public partial class WebForm1 : System.Web.UI.Page {  protected void Page_Load(object sender, EventArgs e)  {  }  //このメソッドをマスターページで実行したい  public string メソッド()  {   return "XXXXXXX";  } }...

  • セレクトボックスの内容に応じウインドウを書き換え、さらにセレクトボック... JavaScript

    web上のjavascript入門ページなどを参照しながら学習中ですが詰まってしまいました。よろしくお願いします。 1. topページにセレクトボックスを設置。 2. セレクトされた内容に応じて、現在のウインドウを書き換えた後topページと同じセレクトボックスを設置。 3. 2を繰り返す。 このような動作をさせたいのですが、現在のウインドウを書き換えることは出来るのですがセレクトボックスを設置しようとするとエラーになります。 script_test01.htmlの内容 -------------------------------------------------- <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> </head> <body> <script type='text/javascript' src='script_test01.js'> </script> <br> <form name='form_0'> <select onchange='rewrite()' name='sel_0'> <option>A or B</option> <option>A</option> <option>B</option> </select> </body> </html> -------------------------------------------------- script_test01.jsの内容 -------------------------------------------------- function rewrite() { var sel_in =document.form_0.sel_0.options.selectedIndex; var sel_name = document.form_0.sel_0.options[sel_in].text; document.write('<html>\n'); document.write('<head>\n'); document.write('<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">\n'); document.write("<script type='text/javascript' src='script_test01.js'>\n"); document.write("</script>\n"); document.write('</head>\n'); document.write('<body>\n'); document.write(sel_in,' : ',sel_name,'<br>\n'); /*↓この部分がうまくいかない document.write('<br>\n'); document.write('<form name='form_0'>\n'); document.write('<select onchange='rewrite()' name='sel_0'>\n'); document.write('<option>A or B</option>\n'); document.write('<option>A</option>\n'); document.write('<option>B</option>\n'); document.write('</select>\n'); /*↑この部分がうまくいかない document.write('</body>\n'); document.write('</html>\n'); } -------------------------------------------------- script_test01.jsのコメントアウトをはずすとエラーになります。 script_test01.js内でさらに自分自身を記述している部分辺りなど、なにかおかしなことをやっていのではという自覚はありますが、よくわかりません。 あわせて質問ですが、.htmlと.jsはEUCで作成しcharsetもEUC-JPを指定しています。 topページをブラウザのエンコードで確認すると当然「日本語[EUC]」となっていますが、セレクトボックス選択後書き換えられたページを確認すると、「Unicode」なっていますがなぜでしょうか?「日本語[EUC]」に出来ないでしょうか?...

ページ先頭へ