ASP.NET实现动态页面标题

来源:互联网 发布:php二维数组键值修改 编辑:程序博客网 时间:2024/05/28 16:10

在ASP中,我们可以用:


<TITLE>
<%
        Response.Write("我把标题给改了!")
%>
</TITLE>


的方式来实现动态的改变页面标题,因为ASP的程序代码可以与HTML代码可以交错写在一起,可是到了ASP.NET时代,我们坚决不那样做,为什么,以后的维护工作太难了。这也许是ASP程序员最头疼的事。但是,在ASP.NET中怎么样才能实现呢?
  ASP.NET为我们提供了一个控件类:System.Web.UI.HtmlControls.HtmlGenericControl。它可以实现HTML的元素的一个实例,比如在.cs代码中控制aspx中的<td>元素(注意,它不是<ASP:TableCell>)。我们知道,页面标题是被包含在<TITLE></TITLE>中的,而<TITLE>也是一个HTML的元素,所以,我们就可以利用System.Web.UI.HtmlControls.HtmlGenericControl来控制<TITLE>了。
  ASP.NET中,如果想在.cs中控制aspx的一个元素(不论这个元素是Web控件还是HTML控件),那么这个元素的runat属性必须设置成server,也就是说,只有元素的runat属性设置成server后,在.cs中才可以控制这个元素(当然,这个元素必须设置id的)。
  现在我们着手试试,在aspx文件的HTML代码中,更改<TITLE>元素为:


        <TITLE runat="server" id="titleControl">Default Title</TITLE>


  注意一定要设置runat="server"和id(id很重要,并且注意大小写)。这里的Default Title是默认的标题,你不改标题时,就显示Default Title.
  转到.cs文件,声明一个变量titleControl,类型为System.Web.UI.HtmlControls.HtmlGenericControl:


        protected System.Web.UI.HtmlControls.HtmlGenericControl titleControl;


  这样,titleControl就是<TITLE>了。要改变标题就可以在.cs方法中(比如:Page_Load)加入:


        titleControl.InnerText=“我把标题给改了!”;


  其实对于System.Web.UI.HtmlControls.HtmlGenericControl控件可以作为所有的HTML控件在服务器端的表现,也就是说只要在后台代码(.aspx.cs/.aspx.vb)中声明一个与前端的HTML控件Id相同的System.Web.UI.HtmlControls.HtmlGenericControl控件对象就可以,并要注意前端的HTML控件的属性中要加上一句runat="server",要不然后,后台代码是不会对前端HTML控件执行操作的。



  2005-08-16,突然发现用户自定义控件也是这样访问的。也就是说,如果想在后台代码(aspx.cs)中访问用户自定义控件的某个属性或方法(当然必须是public),那么,就需要在aspx文件的HTML定义用户控件Id,同时还要加上一句runat="server",然后在后台代码(aspx.cs)中声明这个用户控件的引用(跟声明类的其他字段一样),只不过形式是“protected ;”。这样,在后台代码(aspx.cs)中才可以操作这个自定义控件了。(真不明白,微软为什么不为用户自定义控件在aspx文件中自动加上runat="server"属性,同时在后台代码中加上对此控件类似其他Web控件一样加上protected声明?)

原创粉丝点击