• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マスターページにコードを入れたい)

マスターページにコードを入れたい

このQ&Aのポイント
  • ASP.Netの経験がほとんどないのですが、マスターページに特定の処理をコードで実行したいと思っています。
  • <%= utils.Utility.GetLastUpdated() %>のコードが正しく実行されず、表示されてしまう問題が発生しています。
  • マスターページにmain.cssファイルをリンクする際に、コードが正しく動作しない状況に困っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • nn1102
  • ベストアンサー率80% (12/15)
回答No.4

こんにちは。 aspx 側のコードを一切とっぱらって、コードビハインドの方に以下のコードを入れたら一応動きました。いかがでしょうか。 protected void Page_Load(object sender, EventArgs e) {   HtmlLink cssLink = new HtmlLink();   cssLink.Href = "main.css?" + utils.Utility.GetLastUpdated();   cssLink.Attributes.Add("rel", "stylesheet");   cssLink.Attributes.Add("type", "text/css");   cssLink.Attributes.Add("media", "screen");   this.Page.Header.Controls.Add(cssLink); }

stoutontap
質問者

お礼

期待通りにCSSにクエリ文字列を追加することができました。 ASP.NETの知識がまったくなく勉強する時間もなく、それでもこの処理だけどうにか実装する必要があったのでとても助かりました。ありがとうございます。

その他の回答 (3)

  • nn1102
  • ベストアンサー率80% (12/15)
回答No.3

こんにちは。 > ネームスペースにソリューション名を追加すればいいのでしょうか? ソリューション名というか、utils.Utility クラスが属するプロジェクトがありますよね。それを右クリック→プロパティ→「アプリケーション」タブの「既定の名前空間」に書いてある文字です。 P タグでは再現しませんが、HEAD タグ内に LINK タグを同じように入れてみたところ再現しました。 周囲の HTML との関係?ちょっと原因はわからないです、すみません。 かなり力技な感じですが、以下のコードだとcss?の後に得たい値が入ると思います。 <%="<link href=main.css?" + WebApplication1.utils.Utility.GetLastUpdated() + " rel=""stylesheet"" type=""text/css"" media=""screen"" />"%>

stoutontap
質問者

補足

ネームスペースは utils だけでした。 <%="<link href=main.css?" + WebApplication1.utils.Utility.GetLastUpdated() + " rel=""stylesheet"" type=""text/css"" media=""screen"" />"%> この記述を入れたら、以下のエラーが出ました。 The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>) このエラーを調べてみたら、<%= %> ではなく <%# %> を使うと良い的なことが書いてあったので試したところ、今度はエラーは消えましたが何の出力もされなくなりました(<link>タグ自体が出力されない)。 やりたいことは非常にシンプルなこと(更新した日付をクエリ文字列としてCSSファイルに付ける)なのですが、ASP.Netでは難しいのでしょうか?

  • nn1102
  • ベストアンサー率80% (12/15)
回答No.2

こんにちは。 <%= utils.Utility.GetLastUpdated() %> を フルネームスペースで記述されてみてはどうでしょうか。 私の実験したソリューション、プロジェクト名:WebApplication1 自作のクラス:Site1.Master、Utility.vb、WebForm1.aspx ◆Site1.Master の aspx の body 内に一行追加 <p><%=WebApplication1.utils.Utility.GetLastUpdated()%></p> ◆Utility.vb の内容 Namespace utils   Public Class Utility     Public Shared Function GetLastUpdated() As String       Return DateTime.Now.ToString("yyyyMMddHHmmss")     End Function   End Class End Namespace ◆WebForm1 ウィザード通りに ContentPlaceHolder を作成しただけ

stoutontap
質問者

補足

ネームスペースにソリューション名を追加すればいいのでしょうか?やってみましたが同じ結果で、 &lt;%= ソリューション名.utils.Utility.GetLastUpdated() %> と結果のHTMLには表示されます。ただそのまま表示されるのではなく、<%= が &lt;%= と展開されているあたりもおかしな感じです。 マスターページではなく普通の.aspxファイルなら<%= utils.Utility.GetLastUpdated() %>と記述することで正常に、上記のようにコードがそのまま表示されるのではなくプログラムの結果が表示されます。 Utilityクラスは以下のように定義しています。(余計なメソッドは省略) namespace utils { public static class Utility { public static string GetLastUpdated() { return ConfigurationManager.AppSettings["LastUpdated"]; } } }

  • pick52
  • ベストアンサー率35% (166/466)
回答No.1

IISの設定でASPやASP.NETが動作するようになっていますか? また、拡張子がhtmlまたはhtmだったりしませんか。 ASPの場合は拡張子はasp、ASP.NETの場合はaspxにしてください。

stoutontap
質問者

補足

他のプログラムコード(DB処理など)は正常に実行されていますのでそういう問題ではないと思います。

関連するQ&A