您的位置:首页 > 编程语言 > ASP

动态改变Asp.net页面标题方法整合

2007-08-17 23:53 591 查看
出处::http://dotnet.csdn.net/page/67d2930a-2ed5-47ea-a752-c3ff957e328f

以下代码在 VS.NET 2005(Asp.Net + C#)环境中测试通过;

方法1:直接用脚本改变页面标题

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#应该是(vb.net本人不懂):

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。 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息