设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 324|回复: 4
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
1#
发表于 2009-3-16 14:34:27 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
以下代码在 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";
您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 18:31 , Processed in 0.094061 second(s), 9 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表