|
.NET TIPS
[ASP.NET]<head>タグの内容を動的に生成するには?[2.0、C#、VB]
デジタルアドバンテージ 岸本 真二郎
2008/11/06 |
|
|
ASP.NETでは、<body>タグの中身だけでなく、<head>タグに含まれる<title>タグや<meta>タグなども動的に生成できる。
<title>タグの生成
<title>タグの内容を動的に生成するには、HtmlHeadクラス(System.Web.UI.HtmlControls名前空間)のTitleプロパティを使用する。HtmlHeadクラスのインスタンスは、PageオブジェクトのHeaderプロパティから参照できる。
HtmlHeadクラスのTitleプロパティに文字列を設定すると、<title>タグにその内容がセットされる。なお、事前に<title>タグに記述されていた内容は消去(上書き)される。
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Page.Header.Title = "ASP.NET サンプル";
}
}
|
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Page.Header.Title = "ASP.NET サンプル"
End Sub
End Class
|
|
<title>タグを生成するコード例(上:C#、下:VB) |
<meta>タグの生成
SEOなどの目的で、<head>タグに<meta>タグを追加し、日付やキーワード、ページの概要などを設定する場合、動的に<meta>タグを生成してブラウザに返すことが可能だ。
これを行うにはHtmlMetaクラス(System.Web.UI.HtmlControls名前空間)のインスタンスを作成し、<meta>タグとして生成する内容をセットして、HtmlHeadオブジェクトのControlsプロパティに追加する。
using System;
using System.Web.UI;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
HtmlMeta meta = new HtmlMeta();
meta.Attributes.Add("name", "author");
meta.Attributes.Add("content", "authorに関する情報");
Page.Header.Controls.Add(meta);
}
}
|
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim meta As New HtmlMeta()
meta.Attributes.Add("name", "author")
meta.Attributes.Add("content", "authorに関する情報")
Page.Header.Controls.Add(meta)
End Sub
End Class
|
|
<meta>タグを生成するコード例(上:C#、下:VB) |
<link>タグの生成
HtmlLinkクラス(System.Web.UI.HtmlControls名前空間)を使用すると、CSSファイルを指定する場合に使用する<link>タグを生成できる。
<meta>タグの場合と同様に、HtmlLinkクラスのインスタンスを作成し、CSSのファイル名、MIMEタイプなどを指定する。HtmlHeadオブジェクトのControlsプロパティにインスタンスを追加するのも、<meta>タグの場合と同様だ。
using System;
using System.Web.UI;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
HtmlLink myHtmlLink = new HtmlLink();
myHtmlLink.Href = "/style/MyStyleSheet.css";
myHtmlLink.Attributes.Add("rel", "stylesheet");
myHtmlLink.Attributes.Add("type", "text/css");
Page.Header.Controls.Add(myHtmlLink);
}
}
|
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim myHtmlLink As New HtmlLink()
myHtmlLink.Href = "/style/MyStyleSheet.css"
myHtmlLink.Attributes.Add("rel", "stylesheet")
myHtmlLink.Attributes.Add("type", "text/css")
Page.Header.Controls.Add(myHtmlLink)
End Sub
End Class
|
|
<link>タグを生成するコード例(上:C#、下:VB) |
実行結果
以上の3つのタグを動的に生成した場合の、元の.aspxファイルの内容と、ブラウザに返されたHTMLの内容を次に示す。
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>消されます</title>
</head>
<body>
<form id="form1" runat="server">
<div>
headタグを動的に生成する
</div>
</form>
</body>
</html>
|
|
元のDefault.aspxの内容 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>ASP.NET サンプル</title>
<meta name="author" content="authorに関する情報" />
<link href="/style/MyStyleSheet.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form name="form1" method="post" action="Default.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNzgzNDMwNTMzZGSz0gtj3UR7EyxqBOaHBkUBCHbzPw==" />
</div>
<div>
headタグを動的に生成する
</div>
</form>
</body>
</html>
|
|
ブラウザに送られたDefault.aspxの内容 |
<title>タグの内容が上書きされ、<meta>タグと<link>タグが追加されているのが分かる。
<meta>タグや<title>タグなどに記述する内容は、Web.configなどの外部の構成ファイルやデータベースなどに格納しておき動的に生成することで、記述内容を変更する場合にも再ビルドすることなくコンテンツが変更できるようになる。
利用可能バージョン:.NET Framework 2.0以降
カテゴリ:Webフォーム 処理対象:ページ
使用ライブラリ:HtmlHeadクラス(System.Web.UI.HtmlControls名前空間)
使用ライブラリ:HtmlMetaクラス(System.Web.UI.HtmlControls名前空間)
使用ライブラリ:HtmlLinkクラス(System.Web.UI.HtmlControls名前空間)
|
|
generated by
|
|
Insider.NET 記事ランキング
本日
月間