网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > ASP.NET技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.asp.net关于文件在数据库的存入和.
.通过HttpWebRequest 发送 POST 请.
..net中错误日志的写入.
.DataGrid 的 全选/取消全选 控制.
..Net中如何操作IIS(原理篇).
.在自定义HttpHandler中使用Sessi.
.在ASP.NET中使用Treeview控件和X.
.ASP.NET应用程序安全性问题.
.收藏一段小的.net下的验证码片段.
.ASP 2.0 数据绑定函数Eval()的机.
.ASPX中的用户控件与ASP中的INCLU.
.获取网站的RSS聚合到自己的网页.
.ASP.net 页面被关闭后,服务器端.
.获取数据行数据信息.
.ASP.NET中随机数生成及应用.
.COOKIE问题.
.httpRuntime 一点经验.
.自定义控件中使用枚举类型的属性.
.ASP.NET 2.0 中好东西(theme)介绍.
..NET环境下几种不同的邮件发送解.

aspx页面中标题单点解决方案

发表日期:2006-4-4


web页面标题的单点处理技巧

最近在使用.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);
    }

解释:
一、之所以不在(!this.IsPostBack){}块中实现页面判断是因为page.Title中无法保存视图状态,我觉得这是.net2.0中的一个小bug吧。
二、之所以在render方法重写title属性是因为在页面的生存期中,render方法不会保存viewstate,而从写page.Title内容仅在masterpage中有效是因为masterpage负责页面标题的render,在其后的page的render方法中,title已经render完毕,些时改变title并不会影响render的结果。


出处:七思软件 BLOG

上一篇:自定义ViewState的保存方式 人气:5714
下一篇:对ASP.NET 2.0下面的新控件的困惑 人气:6346
浏览全部asp.net的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐