摘要:ASP.NET 設定頁面標題及 Metadata
參考:如何在ASP.NET的CodeFile中增加Meta設定(每分鐘Refresh範例)
在一篇新文章發表時,為了讓讀者更容易進入描述的情境中,通常會提供一些額外的資訊,讓人一看就可以大概曉得這篇文章想要表達什麼,其中包含有「文章標題、摘要、作者等」。這些資訊通常稱為Metadata ,也就是描述這個資訊在講什麼的資訊。
HTML 也提供了這些標籤供我們使用,該標籤按照規定必須放在head 區域中,例如頁面標題就是<title> 標題</title> , 其它資訊可以使用 <meta name="XXX" Content="XXX" /> ,這篇就來介紹怎麼設定頁面的title 標籤和其它標籤。
如果想看.net 1.1 如何設定title 請見我在藍色小舖部落格的舊作
法一:直接呼叫Page 的Title 屬性
最直接的做法,這個方法的好處是無需在前端HTML 碼中額外加上任何設定。這也是ASP.NET 推薦的方法。
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
this.Title = "利用後端程式碼設定頁面標題";
var meta = new System.Web.UI.HtmlControls.HtmlMeta();
meta.Attributes["Name"] = "Author";
meta.Attributes["Content"] = "Moudou";
this.Header.Controls.Add(meta);
}
}
法二:透過自訂的Property + 顯示運算式
此法的重點是在頁面類別中,我宣告了一個屬性「titleText 」,並設為protected ,這樣就可以利用顯示運算式直接存取了。如果要配合資料庫存取的話,記得要加上Null 判斷哦。
<%@ 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><% = this.titleText %></title>
<meta name="Author" content="<% = this.AuthorText%>" />
</head>
<body>
<form id="form1" runat="server">
</form>
</body>
</html>
public partial class Default : System.Web.UI.Page
{
protected string titleText { get; set; }
protected string AuthorText { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
this.titleText = "利用顯示運算式設定頁面標題";
this. AuthorText = "Moudou";
}
}
此法的另一種形式就是配合資料繫結運算式,內容可以參考保哥的blog http://blog.miniasp.com/post/2008/03/How-to-use-Data-Binding-Expression-Syntax-in-Page.aspx 或參考MSDN 上的說明 http://support.microsoft.com/kb/976112/zh-tw
法三:使用Literal 控制項
Literal 是個很棒的控制項,它不會產生任何額外的標籤,所以可以放心地建立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><asp:Literal runat="server" ID="ltlTitle" /></title>
<asp:Literal runat="server" ID="ltlAuthor" />
</head>
<body>
<form id="form1" runat="server">
</form>
</body>
</html>
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
this.ltlTitle.Text = "利用後端程式碼設定頁面標題";
this.ltlAuthor.Text = "<meta name=\"Author\" content=\"XXXX\" />"
}
}