技术开发 频道

Page Template(页模板)


【IT168技术文档】

  下面主要讨论的将是:ASP.NET有哪些途径可以解决页面元素或功能的共用问题?ASP.NET Page Template能带给我们什么效果?
  1、 用户控件(User Controls)
  在刚接触ASP.NET时,看过一两本台湾人的书,他们在其中介绍了有关Pagelet(他们称为“网页配件”的东西,感觉比较新鲜。后来才知道, Pagelet的真正名字叫User Control,我们称为用户控件。用户控件其实就是封装了HTML代码块及后部服务器端代码的一个小页面模块,以方便在许多不同的ASP.NET页面里复用它。该部分大家可能也都比较熟悉,就不多说了,更具体可以参考http://chs.gotdotnet.com/quickstart/aspplus/doc/webpagelets.aspx。用户控件仍然没有很好解决页面元素和功能共用的问题。比如,你封装了一个Header.ascx以让每个页面头保持一致,随之而来的是你的每个页面都必须拉放Header.ascx在一定位置;当你需要改变Header.ascx位置,将之放在每个页面底下时,你还必须把每个页面一个一个修改过去。
  2、 Page Template
  在ASP.NET Web应用程序项目里,所有ASPX页都是继承自System.Web.UI.Page类。正因为如此,Page Template方案里,为了解决视图和功能共用问题,我们创建了一个继承自System.Web.UI.Page类的页面基类PageBase,并将 Web应用程序中的所有ASPX页面继承自该页面基类PageBase。



  在System.Web.UI.Page和ASPX页后部代码之间增加了一层PageBase,这将有助于我们把一些公用的视图或功能增加到PageBase中,以使所有页面都具有公用特性。下面为PageBase类代码:
using System; using System.Web.UI; public class PageBase : System.Web.UI.Page { private string _pageTitle; public string PageTitle { get { return _pageTitle; } set { _pageTitle = value; } } protected override void Render(HtmlTextWriter writer) { // 首先创建html及body节点 writer.Write(@" <html> <head> <title>" + PageTitle + @"</title> </head> <body>"); // 其次允许基类呈现ASPX页面中的HTML代码及ASP.NET控件 base.Render( writer ); // 最后结束body和html节点 writer.Write(@" </body> </html>"); } }
0
相关文章