广州网站建设 >> 业内新闻 >> 简单点解决.NET页面标题

简单点解决.NET页面标题

广州网站建设 2007-11-12 3:35:56

  一、整个网站中aspx页面标题通常没有统一的存放位置,针对每个页面要么把页面标题直接硬编码在页面的aspx文件中,要么通过aspx.cs动态写进去(1.1中还要加入额外的标题控件,2.0中可以使用Page.Title属性),而整个站点如果网页很多的话,这种重复逻辑的代码就要写很多次,极其不美观,并且无法在其它用到标题信息的地方实现同步。

  二、即使为了支持多语言支持把所有的页面标题都放入资源(或xml)文件中,通过通一的程序代码来加载标题也会存在一个问题,就是页面中用到页面标题的地方可能不仅在标题区如(页面导航控件),如何让这些控件也从这些资源文件(或xml)中取得这些标题信息也是一个头痛的问题。

  要达到的目的:

  一、在整个网站中的主模板中一次性解决网页标题的所有问题,所有网站中使用的标题均放在Web.sitemap(可支持多语言)中维护,这样也可以同时同步维护页面的导航信息。

  二、在弹出窗体的标题中自动为每一个网站标题后面加入站点名称如(用户登录|七思软件),但在页面导航控件中引用标题时则不出现这个站点名称,如(主页>会员中心>用户登录)。

  三、当aspx.cs的程序中引用page.Title属性时不能有站点名称如页面标题栏中显示的为(用户登录|七思软件),但在页面的正常程序中引用的page.Title值为(用户登录)。

  具体的实现方法如下:

  在网站的masterpage中加入以下代码:

protected void Page_Load(object sender, EventArgs e)
{
 if (!this.IsPostBack)
 {
  this.searchDescription.Content = this.SearchDescription;
  this.searchKeywords.Content = this.SearchKeywords;
 }
 if (SiteMap.CurrentNode != null)
 {
  this.Page.Title = SiteMap.CurrentNode.Title;
 }
 else
 {
  this.Page.Title = "尚未在Web.sitemap配置此页面导航";
 }
}
protected override void Render(HtmlTextWriter writer)
{
 this.Page.Title = this.Page.Title + " | " + Keyss.WebFramework.ConfigManager.GetInstance().SiteName;
 base.Render(writer);
}

  解释:

  一、之所以不在(!this.IsPostBack){}块中实现页面判断是因为page.Title中无法保存视图状态,我觉得这是.net2.0中的一个小bug吧。

  二、之所以在render方法重写title属性是因为在页面的生存期中,render方法不会保存viewstate,而从写page.Title内容仅在masterpage中有效是因为masterpage负责页面标题的render,在其后的page的render方法中,title已经render完毕,些时改变title并不会影响render的结果。

责任编辑: 参与评论
广告位招租,广告代号:GGAD
网页命名是最重要的环节
我就给大家举个例子吧,比如,对于做广州网站设计,可以将一些网页适当命名为网站设计.html,广州网站设计.html,wangzhansheji.html等
百度趋向大众化
百度趋向大众化,无论设计还是程序都一样
推广始终是网站制作最先考虑的
让更多的人知道在互联网上有这么一个好的项目,这个好地方很适合这样的一群人,但是前提是要让别人知道
网站用户才是关键
初创网站就像一个刚到社会工作的人那样,想的很多、报复很大,但是做的很少,总结的东西就更微乎其微;行动起来,规划确认好了的事情就一定要执行,坚持你的方式
整理一些站长心情
站长也许会浮躁,我也浮躁过,自己今天多少IP,怎么别人比自己发展的还快,我今天IP这么少的这么可怜
办站2年站长谈经验
推广对站长来说是很累的一件事,我没办过其他站,只办美女站,嘿嘿,毕竟好发展吗,来钱快,毕竟我没办过其他站,也只有对美女站而谈
广州网站制作  公司咨询热线:(020) 38021992 38021997; 手机:13719300941地址:广州市天河区中山大道西东方新世界10栋1106室
点击这里与我QQ交流   点击这里与我MSN交流   Skype交流