ASP.NET中实现模板页

  使用过JavaStruts的程序员应该知道,Struts中有一个模板标记,虽然其使用起来比较复杂,但对于有大量页面的程序来说其带来了很多方便。但是,在ASP.NET中并没有现成实现可用,这方面国内讨论的也很少,其实,重写sender方法我们也可以实现类似的功能。下面是我项目中使用的一个基类模板类。

1using System;

  2using System.Web.UI;

  3

  4namespace RepeaterDemo.Web.PageTemplate

  5{

  6 /**//// <summary>

  7 /// WebPageTmplate 页模板基类。

  8 /// </summary>

  9 public class WebPageTmplate:System.Web.UI.Page

  10 {

  11

  12  属性#region 属性

  13  string pageTitle="Title";

  14  string pageHeader=  "<table cellspacing='0' cellpadding='0' width='100%' height='49' background='http://localhost//RepeaterDemo//Images/top_stripe1.gif' border='0'>" +

  15       "  <tr>" +

  16       "    <td valign='top'><img alt='' src='http://localhost//RepeaterDemo//Images/title.gif' border='0'></td>" +

  17       "  </tr>" +

  18       "</table>" ;

  19  string pageScript;

  20

  21  string pageLeft=" Menu";

  22

  23  string pageFooter="<div align='center'>meil.cnblogs.com  meil 版权所有 2006</div>";

  24

  25

  26  public string PageTitle

  27  {

  28   set {pageTitle=value;}

  29   get {return pageTitle;}

  30  }

  31

  32  public string PageHeader

  33  {

  34   set {pageHeader=value;}

  35   get {return pageHeader;}

  36  }

  37

  38  public string PageScript

  39  {

  40   set {pageScript=value;}

  41   get {return pageScript;}

  42  }

  43

  44  public string PageLeft

  45  {

  46   set {pageLeft=value;}

  47   get {return pageLeft;}

  48  }

  49

  50  public string PageFooter

  51  {

  52   set {pageFooter=value;}

  53   get {return pageFooter;}

  54  }

  55

  56  #endregion

  57

  58  protected override void Render(HtmlTextWriter writer)

  59  {

  60

  61

  62   writer.Write(@"<html><head><title>" + pageTitle + @"</title>");

  63   writer.Write(pageScript + @"</head><body>");

  64

  65   writer.Write(pageHeader);

  66

  67   writer.Write(@"<table><tr><td width='200'> " + pageLeft + @"</td><td>");

  68

  69   // 其次允许基类呈现ASPX页面中的HTML代码及ASP.NET控件

  70   base.Render( writer );

  71

  72   writer.Write("</td></tr></table>");

  73

  74   writer.Write(@"<div align='cnter'>" + pageFooter + @"</div>");

  75

  76   writer.Write(@"</body></html>");

  77  }

  78 }

  79

  80}