最近在使用.net2.0中ms提供的页面导航组件sitemappath时,想到了一种解决页面标题不同步的一种简单而又方便的机制。
目前存在的问题:
一、整个网站中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); } |
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器