当前位置:首页>网络学院>程序开发>ASP.NET教程>文章内容

ASP.NET使用基类页来统一网站风格

[ 来源:http://www.it55.com | 作者: | 时间:2007-09-03 | 收藏 | 推荐 ] 【

在Asp.net系统的开发过程中,我们可以通过先设计页面基类,后页面继承基类的方法,来保证页面风格的一致,同时还可以减少代码的重用率。

精美韩国模版下载http://www.it55.com

  实际使用时,按照功能页面划分,可以定义多个基类页,如: vd;k;l http://www.it55.com rdfg

class FormBase
class BizFormBase :FormBase
class ViewFormBase : BizFormBase
class EditFormBase : BizFormBase
class QueryFormBase : FormBase 免费网页模版下载http://www.it55.com

  FormBase:基类页中的根,提供与业务无关的服务,如:URL重写,日志等。
  BizFormBase:加入和业务相关的属性,如:该页面的当前业务对象ID等。
  ViewFormBase,:EditFormBase:实现具体的查看,编辑功能。
  QueryFormBase:实现对通用查询页面的封装。

45398 http://www.it55.com it55学习IT知识,享受IT生活 4dfkjn

  从面向对象的角度看,基类页与普通的基类,继承类设计其实区别并不大,都要在基类中编写公用的属性方法,并通过虚函数、事件等方式让继承类重写或响应。所不同的是基类页的设计过程受到所在环境的约束。在WinForm环境下,我们可以预先定义好窗体的公用元素,如工具条,默认的表格以及DataSource控件等。而到了Asp.net下的WebForm,则无法实现界面一级的继承,同时加入了状态管理等要求。 vd;k;l http://www.it55.com rdfg

  为了帮助大家理解,我们以查询基类页的设计过程来分析:

精美商业网页模版下载http://www.it55.com

  一个最简单的查询页面会包括三部分,多个查询条件文本框,查询按钮,以及表格。同时查询页会和一个数据访问组件关联,当点查询时,会把查询条件转成where语句提交给数据访问组件。 免费壁纸下载http://www.it55.com

QueryPeopleForm
OnQueryButtonClick()
{
 string peopleName = txtPeopleName.Text;
 string peopleAge = txtPeopleAge.Text; 精美韩国模版下载http://www.it55.com

 string sql;
 sql = string.Format(“Name Like‘%{0}%’and Age = {1}, PeopleName, peopleAge);

http://www.it55.com

 PeopleManager manager = new PeopleManager();
 this.gridMain.DataSource = manager.GetDataTable(sql);
 this.gridMain.DataBind();
}

45398 http://www.it55.com it55学习IT知识,享受IT生活 4dfkjn

  当点击查询按钮时,我们做了以下三件事: 免费壁纸下载http://www.it55.com

  1、获取查询条件
  2、提交查询
  3、将查询结果绑定到表格 精美韩国模版下载http://www.it55.com

  这儿的提交查询和绑定在不同的查询页面都是一样的,于是我们首先把2,3放到基类页中,并提供这样一个方法:void QueryAndBind(IManager manager, string sql); 这儿要定义IManager接口,让所有的Manager都实现该接口,这样基类页就无需知道具体的Manager,只要调用IManager.GetDataTable方法,然后绑定表格到即可。

精美商业网页模版下载http://www.it55.com

  使用基类页后的代码: vd;k;l http://www.it55.com rdfg

QueryPeopleForm : QueryFormBase
OnQueryButtonClick()
{
 string peopleName = txtPeopleName.Text;
 string peopleAge = txtPeopleAge.Text;
 sql = string.Format(“Name Like‘%{0}%’and Age = {1}, PeopleName, peopleAge);
 QueryAndBind(new PeopleManager(), sql);
}

精美商业网页模版下载http://www.it55.com

  这儿的代码少了,但仍有问题,当查询条件变化后,每次拼查询语句的工作即枯燥又容易出错,那么我们加入一个Query类,以简化这儿的操作:

精美商业网页模版下载http://www.it55.com

public enum QueryOperator
{
 //等于比较。
 Equal = 0,
 // 不等于
 NotEqual = 1,
 // Like比较
 Like = 6
} http://www.it55.com

class Query
{
 void Add(string fieldName, string value, QueryOperator oper);
 string GetSql();
}

vd;k;l http://www.it55.com rdfg

QueryPeopleForm : QueryFormBase
OnQueryButtonClick()
{
 Query query = new Query();
 query.Add(“Name”, txtPeopleName.Text, QueryOperator.Like);
 query.Add(“Age”, txtPeopleAge.Text, QueryOperator.Equal);
 QueryAndBind(new PeopleManager(), query.GetSql());
} 45398 http://www.it55.com it55学习IT知识,享受IT生活 4dfkjn

  把拼Sql的工作放在Query类中做,调用者只要声明查询字段,对应的值,和比较类型即可。 vd;k;l http://www.it55.com rdfg

  到这一步,我们的基类页已经很好用了,但还有一个小问题,也就是前面说的,在WebForm中无法实现界面级的继承,那么基类页的QueryAndBind方法,将无法知道查询结果要绑定到哪一个表格,这时我们的做法是在基类页中声明DefaultGrid属性,让继承页来告知当前的表格控件。 精美韩国模版下载http://www.it55.com

  修改后的代码: http://www.it55.com/

QueryPeopleForm : QueryFormBase
OnQueryButtonClick()
{
 InitControls(gridMain);
 Query query = new Query();
 query.Add(“Name”, txtPeopleName.Text, QueryOperator.Like);
 query.Add(“Age”, txtPeopleAge.Text, QueryOperator.Equal);
 QueryAndBind(new PeopleManager(), query.GetSql());
} 45398 http://www.it55.com it55学习IT知识,享受IT生活 4dfkjn

  至此,基类页的功能已经完整了,但仍然不够,如果我们以后想改变查询按钮点击的行为,比如查询结果为空时,要弹出对话框提示,这时仍然要到处修改页面代码,这不是我们所希望的,于是我们将QueryButton的OnClick操作也放在基类页了中执行,继承页只要初始化数据访问组件和设置查询条件即可。

sflj http://www.it55.com kg^&fgd

QueryPeopleForm : QueryFormBase
void Initialize()
{
 // 指定页面对应的Manager
 Manager = new PeopleManager();
 // 绑定控件
 InitControls(gridMain, btnQuery);
} 45398 http://www.it55.com it55学习IT知识,享受IT生活 4dfkjn

void GetQueryInfo(Query query)
{
 //获得查询条件
 query.Add(“Name”, txtPeopleName.Text, QueryOperator.Like);
 query.Add(“Age”, txtPeopleAge.Text, QueryOperator.Equal);
} 免费设计素材下载http://www.it55.com

QueryFormBase: sflj http://www.it55.com kg^&fgd

private IManager manager = null;
public IManager Manager
{
 get { return manager; }
 set { manager = value; }
} 精美商业网页模版下载http://www.it55.com

void InitControls(GridView grid, Button queryButton)
{
 this.defaultGrid = grid;
 this.queryButton = queryButton;
 queryButton.Click += new EventHandler(QueryButton_Click);
} http://www.it55.com在线教程

void QueryButton_Click(object sender, EventArgs e)

(编辑:IT资讯之家 www.it55.com

返回顶部
共2页: 上一页 1 [2] 下一页  

网友评论

[以下评论为网友观点,不代表本站。请自觉遵守互联网相关政策法规,所有连带责任均有评论者自负。]
[不超过250字]