ASP.NET页面中标题单点解决方案

asp.net|解决|页面

  最近在使用.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的结果。

时间: 2024-08-03 15:27:35

ASP.NET页面中标题单点解决方案的相关文章

在ASP.NET页面中实现数据棒图

asp.net|数据|页面     棒图有时又称为"Bar"图.在我的上一篇文章<在ASP.net实现数据图表>中已经介绍了在浏览器看到的图表,一般都是图片文件.那么在ASP.NET中是否也可以生成这些图表?答案是肯定的,因为在ASP.NET中拥有了一个新功能--绘图功能,通过此功能就能够按照要实现的图表的模样来绘制,最后在客户端的浏览器中形成一个图片,从而显示出图表来.        本文就在上一篇文章的基础上,进一步介绍在ASP.NET页面中实现Bar图的具体方法.希望

获取页面中的变量-怎样获取asp.net页面中的变量

问题描述 怎样获取asp.net页面中的变量 做了一个类似应答的页面,对方请求这个页面,我获取请求的参数,进行一些后台处理,然后返回一个json字符串,json字符串放在如下的位置 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="requestProcess.aspx.cs" Inherits="_Default" %> <%=strJson %

asp.net 页面中存在左右框架, 在visual studio 2005调试时,左右拉动框架(设置为可拉动)时程序停止调试,提示javascript的错误,请问如何解决?

问题描述 asp.net页面中存在左右框架,在visualstudio2005调试时,左右拉动框架(设置为可拉动)时程序停止调试,提示javascript错误,提示内容我记不清了,请问如何解决? 解决方案 解决方案二:自己顶一下解决方案三:提示javascript错误,错误详细信息是什么?解决方案四:引用2楼dd__dd的回复: 提示javascript错误,错误详细信息是什么? MicrosoftJScript运行时错误:'length'为空或不是对象.解决方案五:大家帮忙看看为什么,谢啦!解

在asp.net页面中怎么使用多个timer控件!!

问题描述 在asp.net页面中怎么使用多个timer控件!!我想在同一个页面中使用多个...... 解决方案 解决方案二:拉2个解决方案三:定时器是干什么的?asp.net为毛还要定时器?解决方案四:引用楼主u010198515的回复: 在asp.net页面中怎么使用多个timer控件!!我想在同一个页面中使用多个...... Timer控件会引起回发,这样另一个Timer就没有用了.解决方案五:asp.net并不是时下流行的"单页应用程序"机制,而是传统(古老)的"一遍遍

怎么在 ASP.NET页面中打开 OFFICE

问题描述 怎么在ASP.NET页面中打开OFFICE中的WORD,EXCEL等. 解决方案 解决方案二: 解决方案三:System解决方案四:dimnewappasnewword.applicationdimnewdocasnewword.newappnewdoc=newapp.add("d:...")....解决方案五:打开EXCEL文件复杂的用COM简单的用stringConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;D

固定表头-在ASP.NET页面中,固定DATAGRID表头出现的问题

问题描述 在ASP.NET页面中,固定DATAGRID表头出现的问题 使用DIV标签加js纯页面固定表头,实际上就是将表头获取出来填充到一个DIV中,问题就是如何将表头和表中的内容对齐,特别是在表中数据动态改变列宽不固定的时候

ASP.NET页面中去除VIEWSTATE视图状态乱码

首先声明下这篇文章:本文章的发表于2014-10-11日,原作者和版权所有:KoalaAPI(还是本人啦),原链接:http://www.cnblogs.com/KoalaAPI/p/4018727.html(曾被删除!) 保存页的所有视图状态信息和控件状态信息. 作者在早期参与的项目中曾遇到这样的需求:基于SEO技术的开发,当因为时没有接触的MVC框架的 Razor 引擎,所以只能用ASP.NET引擎,如果使用ASP.NET引擎的服务器端控件,那么在ASP.NET页面中就会生成 __Views

在ASP.NET页面中推荐使用覆写而不是事件处理

asp.net|页面 English Version: http://dflying.dflying.net/1/archive/101_prefer_overrides_to_event_handlers_in_aspnet_page.html 这个是我们熟悉的Page_Load()方法.实际上它是一个Event Handler,当定义在System.Web.UI.Page中的Load事件触发时,它开始执行. // use event handlerprotected void Page_Lo

ASP.NET页面中冻结DataGrid的列或头部

asp.net|datagrid|页面 ASP.NET页面中,有时候我们需要冻结datagrid中的某一列,比如显示的数据项过多时,我们需要让第一列不动,拖动横向滚动条时其他列隐藏,这时就需要冻结列了:另外,有时候也需要让datagrid的头部不动,拖动纵向滚动条时,下面的数据项可以滚动.在实现的过程中,其实就是用了css样式来控制,一起看一下. 要冻结哪一列,就把fixCol这个CSS加到HeaderStyle-CssClass和ItemStyle-CssClass--> <style ty