快速业务通道

ASP.NET中基类页的设计和使用

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
用了,但还有一个小问题,也就是前面说的,在WebForm中无法实现界面级的继承,那么基类页的QueryAndBind方法,将无法知道查询结果要绑定到哪一个表格,这时我们的做法是在基类页中声明DefaultGrid属性,让继承页来告知当前的表格控件。

修改后的代码:

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());
}

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

QueryPeopleForm : QueryFormBase
void Initialize()
{
  // 指定页面对应的Manager
  Manager = new PeopleManager();
  // 绑定控件
  InitControls(gridMain, btnQuery);
}
void GetQueryInfo(Query query)
{
  //获得查询条件
  query.Add(“Name”, txtPeopleName.Text, QueryOperator.Like);
  query.Add(“Age”, txtPeopleAge.Text, QueryOperator.Equal);
}
QueryFormBase:
private IManager manager = null;
public IManager Manager
{
  get { return manager; }
  set { manager = value; }
}
void InitControls(GridView grid, Button queryButton)
{
  this.defaultGrid = grid;
  this.queryButton = queryButton;
  queryButton.Click += new EventHandler(QueryButton_Click);
}
void QueryButton_Click(object sender, EventArgs e)
{
  Query query = new Query();
  GetQueryInfo(Query);
  QueryAndBind(manager, query.GetSql());
}

总的代码可以从附件中下载,大家可以加入断点,看看基类,继承类页的代码执行顺序。

应该说基类的设计相对复杂,但好处是继承页的代码变得清楚了,没有多余重复的代码。

而基类页的设计其实是有技巧的,总结起来有以下几条:

1、首先以最直接的方式写出页面代码

2、提取公用方法和添加辅助类

3、提取事件处理流程到基类页中

4、在基类页中设计需要继承页重载的方法与事件

从设计上来讲,用基类页的方式来统一操作、简化页面代码是一种非常直观的方式,缺点是随着项目的演化,基类页会变得大而全,不容易被新的项目重用,这时我们就可以考虑把其中的一部分功能放到用户控件和自定义组件中来实现,以减少耦合性和提高重用性。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号