現在正在做一個站,用的是ASP.NET2.0作爲編寫語言,在這過程中需要動態的改變每一篇文章的標題,ASP中這個是很簡單的。在.NET中知道方法了也就簡單了 :)
public string PageTitle; 或protected string PageTitle;
//再在Page_Load() 方法中初始化;
protected void Page_Load(object sender, EventArgs e)
{
PageTitle = "用程序爲這個賦一個值";
//如何賦值就不是本篇文章討論的問題了。
}
在前臺代碼(Asp.net)中加入<%=PageTitle %>
eg:<title><%=PageTitle %></title>
注:PageTitle不能定義爲private string PageTitle。因爲它受保護級別限制,不可訪問。
動態改變Asp.net頁面標題方法
方法1:直接用腳本改變頁面標題
CODE:
protected void Page_Load(object sender, EventArgs e)
...{
//簡單的這樣寫:
//this.Response.Write("<script language=javascript>document.title="方法1:這是程序更改的標題!"</script>");
string page_title = "方法1:這是程序更改的標題!";
this.Response.Write("<script language=javascript>document.title="" + page_title + ""</script>");
}
方法2:綁定變量改變頁面標題
//首先:在頁面代碼中定義
public string PageTitle; 或protected string PageTitle;
//再在Page_Load()方法中初始化;
protected void Page_Load(object sender, EventArgs e)
...{
PageTitle = "方法2:這是程序更改的標題!";
}
或:public string PageTitle = "方法2:這是程序更改的標題!";
最後:在前臺代碼(Asp.net)中加入<%=PageTitle %>或<% Response.Write(PageTitle); %>
如:<title><%=PageTitle %></title>
或:<title><% Response.Write(PageTitle); %></title>
注:但是不能定義爲private string PageTitle。因爲它受保護級別限制,不可訪問。
方法3:利用服務器控件賦值改變頁面標題
Literal控件:<title><asp:Literal ID="Literal1" runat="server"></asp:Literal></title>
然後在後臺代碼中賦值即可,如:
protected void Page_Load(object sender, EventArgs e)
...{
Literal1.Text = "方法3:這是程序更改的標題!";
}
說明:網上有些說用Label也可以,如
<title><asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></title>,但是我測試不成功。
在<title></title>中見插入Label後,IE瀏覽器解釋出來是:
<title><span id="Label1">方法3:這是程序更改的標題!!!!</span></title>
最後顯示在標題欄的文字是:<span id="Label1">這是程序更改的標題!!!!</span>但是:我們可以利用好多服務器空間的Visible屬性,將其設置爲false,不要放在<title></title>中間。然後在後臺代碼中爲其賦值,在前臺中通過:<title><%=Label1.Text %></title>
或:<title><% Response.Write(Label1.Text); %></title>設置頁面標題。
方法4:直接勇Response.Write()方法輸出
這個方法更直接更明瞭,也可以將<title></title>之間的字符定義爲變量,給變量賦值再構在輸出字符串。
protected void Page_Load(object sender, EventArgs e)
...{
Response.Write("<title>方法4:這是程序更改的標題!</title>");
}
方法5:在前臺給<title>加ID、加Runat=server,在後臺中通過代碼賦值
在前臺Asp.net中設置,
如:<title id="htmTitle" runat="server"></title>
在後臺.cs中對htmTitle的Text賦值,
如:
protected void Page_Load(object sender, EventArgs e)
...{
htmTitle.Text = "方法5:這是程序更改的標題!";
}
說明:
網上有:<TITLE ID=MyPageTitle Runat=Server> </TITLE>,然後
public class Use_This : System.Web.UI.Page
...{
Private System.Web.UI.HtmlControls.HtmlGenericControl SetMyTitle;
private void Page_Load(object sender, System.EventArgs e)
...{
SetMyTitle.InnerText = "~哈哈~";
}
}
此方法我測試的時候,title沒有變化,是不是那沒寫對;
還有孟老大的:<TITLE ID="MyPageTitle" RUNAT="server"></TITLE>
Public Class ChangePageTitleClass ChangePageTitle
Inherits System.Web.UI.Page
Protected MyPageTitle As New HtmlGenericControl()
Private Sub Page_Load()Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
MyPageTitle.InnerText = ".NET"
End Sub
End Class
寫成C#應該是:
public class ChangePageTitle: System.Web.UI.Page
...{
protected HtmlContainerControl MyPageTitle; //不知道要不要new
private void Page_Load(object sender, System.EventArgs e)
...{
MyPageTitle.InnerText = ".NET";
}
}此方法我測試的時候,提示:已經包含了了MyPageTitle的定義。
方法6:在前臺給title加上id,直接在後臺代碼中訪問賦值
在前臺Asp.net中設置,如:<title id="MyTitle"></title>
在後臺.cs代碼中
private void Page_Load(object sender, System.EventArgs e)
...{
Control htm_Con = Page.FindControl("MyTitle");
((HtmlTitle)htm_Con).Text = "方法6:這是程序更改的標題!";
}
說明:
網上有:<title runat="server" id="Title1">WebForm1</title>
.cs代碼如下:
private void Button1_Click(object sender,System.EventArgs e)
...{
Control ctrl=Page.FindControl("Title1");
((HtmlGenericControl)ctrl).InnerText="Hello";
}我在測試的時候報錯,提示不能將HtmlTitle轉換爲HtmlGenericControl。