.NET TIPS

[ASP.NET]ページ・タイトルを実行時に設定するには?

デジタルアドバンテージ
2004/03/05

 HTMLでは<title>要素によりそのページのページ・タイトルを記述することができ、ページ・タイトルとして設定された文字列は、例えばInternet Explorerではウィンドウのタイトル・バーに表示されたりする。ASP.NETのWebフォームでも同様で、.aspxファイルの<head>要素内で文字列を<title>タグと</title>タグで囲むことによりページ・タイトルを設定できる。

 本稿では、このページ・タイトルを実行時に動的に設定する方法について解説する。これにはいくつかの方法が考えられるが、ここでは<title>タグにrunat="server"属性を追加する方法と、<title>要素にインライン式を埋め込む方法の2つを紹介する。

<title>タグにrunat="server"属性を追加する方法

 最初の方法は、<title>タグにrunat="server"属性を追加して、<title>要素をHTMLサーバ・コントロールとして扱うやり方だ。この属性を付加することにより<title>要素は単なる文字列ではなく、1つのコントロールとしてサーバ側でインスタンス化される。つまり、プログラム・コードからアクセスできるようになる。

 ASP.NETの開発環境としてVisual Studio .NETを使用している場合には、デザイン画面でHTML表示にして<title>タグを修正する。このときid属性により名前を付けておく必要がある。これにより、id属性で指定した名前を使って、プログラムから明示的に<title>要素にアクセスできる。

<HTML>
  <HEAD>
    <title id="myTitle" runat="server"></title>
    ……
id属性とrunat="server"属性を追加した<title>タグ
Visual Studio .NETを使用している場合には、.aspxファイルをHTML表示して<title>タグを修正する。

 runat="server"属性が付けられた<titile>要素は、実行時にはHtmlGenericControlクラス(System.Web.UI.HtmlControls名前空間)のインスタンスとして生成され、そのid属性で指定した名前で参照される。

 プログラム・コード側では、まずid属性で指定した名前のメンバを宣言しなければならない(実行時には、これにHtmlGenericControlオブジェクトが代入される)。HtmlGenericControlオブジェクトでは、最終的に出力されるタグ(今回の場合は<titile>タグと</title>タグ)で囲まれる文字列をInnerTextプロパティで指定することができるため、このプロパティにページ・タイトルを設定すればよい。

/// <summary>
/// WebForm1 の概要の説明です。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
  protected HtmlGenericControl myTitle;

  private void Page_Load(object sender, System.EventArgs e)
  {
    // ページを初期化するユーザー コードをここに挿入します。
    myTitle.InnerText = "ページ・タイトルを設定";
  }
  ……
}
ページ・タイトルを設定するためのC#のコード
この例では、ページが作成されるときに最初に呼び出されるPage_Loadメソッドでページ・タイトルを設定している。

 ちなみに、コードビハインドを使用せずに単体の.aspxファイルですべてを記述する場合には、myTitleメンバの宣言は不要だ(内部で自動生成される)。

<title>要素にインライン式(<%= 〜 %>)を埋め込む方法

 インライン式(<%= 〜 %>)は、.aspxファイル内に記述して、ページのメンバを文字列として表示するためのものである。ページ・タイトルとなる文字列変数をこのインライン式で参照し、それを<title>要素に埋め込んでおいても、プログラム・コードから動的にページ・タイトルを設定することができる。

 具体的には、まず適当な名前の変数をインライン式で<title>要素内に記述する。

<HTML>
  <HEAD>
    <title><%= myTitle %></title>
    ……
インライン式を埋め込んだ<title>タグ
このインライン式はプログラム・コードのメンバとして宣言されている「myTitle」という名前の変数の内容を文字列として表示する。

 プログラム・コードでは、インライン式に記述した変数(myTitle)をクラスのメンバとして宣言し、単に値を代入すればよい。

/// <summary>
/// WebForm1 の概要の説明です。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
  protected string myTitle;

  private void Page_Load(object sender, System.EventArgs e)
  {
    // ページを初期化するユーザー コードをここに挿入します。
    myTitle = "ページ・タイトルを設定";
  }
  ……

}
ページ・タイトルを設定するためのコード
この例では、ページが作成されるときに最初に呼び出されるPage_Loadメソッドでページ・タイトルを設定している。

 ここでの例のように、コードビハインドにより記述している場合には、.aspxファイルの内容は最初のページ・アクセス時にコンパイルされ、.csファイル(あるいは.vbファイル、Visual Studio .NETでは拡張子は「.aspx.cs」や「.aspx.vb」などになっている)で記述されているクラスの子クラスとなる。よってインライン式に記述するメンバのアクセス修飾子はprotectedやpublicでなければならない。End of Article

カテゴリ:Webフォーム 処理対象:ページ
使用ライブラリ:HtmlGenericControlクラス(System.Web.UI.HtmlControls名前空間)
 
この記事と関連性の高い別の.NET TIPS
[ASP.NET]<head>タグの内容を動的に生成するには?
[ASP.NET]構成ファイルのカスタム設定項目をページに直接反映するには?
[ASP.NET]ページのタイトルやメタ情報を動的に変更するには?
[ASP.NET]ページから生成されたソース・コードを見るには?
[ASP.NET]アップロードされたファイルをPostedFileプロパティにより取得するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間