使用反射将业务对象绑定到 ASP.NET 窗体控件

时间:2010-03-04 19:12:42  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:定到 ASP.NET Web 窗体,从而降低复杂性并减少错误。(本文包含一些指向英文站点的链接。请注意,在示例文件中,程序员的注释使用的是英文,本文中将其译为中文是为了便于读者理解。)      下载 MSDFormBinding.msi 示例文件。            本页内容    引言 &n...
  正文:适用于:
  Microsoft Visual Studio 2005 及早期版本
  ASP/ target=_blank class=infotextkey>asp.NET 1.1
  C# 编程语言
  Visual Basic 编程语言
  
  摘要:使用反射以单行代码将业务对象绑定到 ASP.NET Web 窗体,从而降低复杂性并减少错误。(本文包含一些指向英文站点的链接。请注意,在示例文件中,程序员的注释使用的是英文,本文中将其译为中文是为了便于读者理解。)
  
  下载 MSDFormBinding.msi 示例文件。
  
  
  
  本页内容
   引言
   简化和缩短窗体代码
   开始:从反射中检索属性列表
   将对象属性值绑定到控件
   用已知属性设置未知控件的值
   反转过程:BindControlsToObject
   性能和 FormBinding 方案的扩展
   结论
   参考资料
  
  引言
  在 Web 开发人员的最常见任务之中,有一项任务是他们要反复执行的:建立更新数据库表的简单窗体。我们将创建一个列表页面和一个窗体页面,列表页面中以表格形式显示记录,窗体页面中带有用于各个数据库字段的适当的窗体控件。许多开发人员还使用表示数据库表的业务对象将代码组织到分为多层的设计中。如果以业务对象 (Document) 来表示数据库表 (Documents),许多窗体的代码看上去将如下所示:
  
  <script runat="server">
  protected void Page_Load(Object Src, EventArgs E) {
  if (!IsPostBack) {
   Document document =
   Documents.GetDocument(Request.QueryString["DocumentID"]);
  
   Title.Text = document.Title;
   Active.Checked = document.Active;
   CreatedDate.Text = document.CreatedDate.ToString();
   AuthorID.FindByValue(document.AuthorID.ToString()).Selected =
   true;
   // ... 等等
   HtmlBody.Text = document.HtmlBody;
  }
  }
  protected void SaveButton_Click(Object Src, EventArgs E) {
   Document document =
   Documents.GetDocument(Request.QueryString["DocumentID"]);
  
   document.Title = Title.Text;
   document.Active = Active.Checked;
   document.CreatedDate = Convert.ToDateTime(CreatedDate.Text);
   document.AuthorID = Convert.ToInt32(AuthorID.SelectedItem.Value);
   // ... 等等
   document.HtmlBody = HtmlBody.Text;
  
   Documents.Update(document);
  }
  </script>
  
  返回页首
  简化和缩短窗体代码
  在以上代码中,对每个控件进行显式转换,并将其设置为窗体控件的正确属性。根据属性和窗体控件的数量,这部分代码可能会变长并难以管理。代码还应包含类型转换的错误更正和 ListControl,这将进一步增加复杂性。即使窗体是由代码生成工具(例如 Eric J. Smith 的优秀的 CodeSmith)生成的,当需要任何自定义逻辑关系时,很容易引入错误。
  
  使用反射,可以仅使用单行代码便将业务对象的所有属性绑定到相应的窗体控件,从而减少代码的行数并增强可读性。完成反射系统的建立后,以上代码将简化为:
  
  protected void Page_Load(Object Src, EventArgs E) {
   if (!IsPostBack) {
   Document document =
   Documents.GetDocument(Request.QueryString["DocumentID"]);
  
   FormBinding.BindObjectToControls(document);
   }
  }
  protected void Save_Click(Object Src, EventArgs E) {
   Document document =
   Documents.GetDocument(Request.QueryString["DocumentID"]);
  
   FormBinding.BindControlsToObject(document); "使用反射将业务对象绑定到 ASP.NET 窗体控件"由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Programming/aspnet/13046.html

 1/6    1 2 3 4 5 6 下一页 尾页


关键字:

关于《使用反射将业务对象绑定到 ASP.NET 窗体控件》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td