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

以下代码在 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 ChangePageTitle
  
Inherits System.Web.UI.Page

  
Protected MyPageTitle As New HtmlGenericControl()

  
Private 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。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值