|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
以前很热炒跨平台,主要是由于硅谷挑战微软霸主地位的热情,但是冷静下来后,跨平台往往不是那么一回事。假设你有个软件,所谓的跨平台,你只需要为第二个平台上重新编译一次就行了,这样很难么?办理|页面 比来在利用.net2.0中ms供应的页面导航组件sitemappath时,想到了一种办理页面题目分歧步的一种复杂而又便利的机制。
今朝存在的成绩:
1、全部网站中aspx页面题目一般没有一致的寄存地位,针对每一个页面要末把页面题目间接硬编码在页面的aspx文件中,要末经由过程aspx.cs静态写出来(1.1中还要到场分外的题目控件,2.0中可使用Page.Title属性),而全部站点假如网页良多的话,这类反复逻辑的代码就要写良多次,极为不美妙,而且没法在别的用到题目信息的中央完成同步。
2、即便为了撑持多言语撑持把一切的页面题目都放进资本(或xml)文件中,经由过程通一的程序代码来加载题目也会存在一个成绩,就是页面顶用到页面题目的中央大概不但在题目区如(页面导航控件),怎样让这些控件也从这些资本文件(或xml)中获得这些题目信息也是一个头痛的成绩。
要到达的目标:
1、在全部网站中的主模板中一次性办理网页题目的一切成绩,一切网站中利用的题目均放在Web.sitemap(可撑持多言语)中保护,如许也能够同时同步保护页面的导航信息。
2、在弹出窗体的题目中主动为每个网站题目前面到场站点称号如(用户登录|七思软件),但在页面导航控件中援用题目时则不呈现这个站点称号,如(主页>会员中央>用户登录)。
3、当aspx.cs的程序中援用page.Title属性时不克不及有站点称号如页面题目栏中显现的为(用户登录|七思软件),但在页面的一般程序中援用的page.Title值为(用户登录)。
详细的完成办法以下:
在网站的masterpage中到场以下代码:
protectedvoidPage_Load(objectsender,EventArgse)
{
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设置此页面导航";
}
}
protectedoverridevoidRender(HtmlTextWriterwriter)
{
this.Page.Title=this.Page.Title+"|"+Keyss.WebFramework.ConfigManager.GetInstance().SiteName;
base.Render(writer);
}
注释:
1、之以是不在(!this.IsPostBack){}块中完成页面判别是由于page.Title中没法保留视图形态,我以为这是.net2.0中的一个小bug吧。
2、之以是在render办法重写title属性是由于在页面的保存期中,render办法不会保留viewstate,而从写page.Title内容仅在masterpage中无效是由于masterpage卖力页面题目的render,在厥后的page的render办法中,title已render终了,些时改动title其实不会影响render的了局。简单的说:.net只有微软一家在做的,微软也不允许别人跟他做相同的工具,所以他就把需要的工具全部封装在.net的平台上了;而java是公开了。 |
|