数据绑定、验证规则和输出格式控制集成

       数据输入和输出在开发过程占据不少的代码编写量。以往很多情况数据输入、输入验证和数据输出、格式控制都是分散编写,这样对于维护非常不方便;于是就想出编写一个控制器来解决这些问题,由控制器集中统一地完成数据绑定(双向)、数据验证和输出格式控制;这样可以减少代码的编写同时也方便代码的维护。

       这一次集成是基于数据绑定的扩展实现(数据绑定组件实现),原有数据绑定已经包括数据绑定(双向)和输出格式控的功能,这里主要加入了输入数据规则验证的处理。验证规则直接由Changer派生扩展实现:


以上只是很简单的(最大值和最小值规则)实现结构
(大小限制规则实现代码),最重要的一个正则表达式规则没有在这里体现出来,在正则表达式规则的基础上可以扩展出更多的规则;实现情况可以从Changer派生出来编写特殊的验证规则需求。

绑定器的制定:

       mEmpBinder = new HFSoft.Data.ObjectDataBinder<Employee>();

mEmpBinder.AddMapper(editAddress, "Text", "Address");

mEmpBinder.AddMapper(editBirthDate, "Text", "BirthDate");

mEmpBinder.AddMapper(editCity, "Text", "City");

mEmpBinder.AddMapper(editCountry, "Text", "Country");

mEmpBinder.AddMapper(editFirstName, "Text", "FirstName");

mEmpBinder.AddMapper(editLastName, "Text", "LastName");

mEmpBinder.AddMapper(editNotes, "Text", "Notes");

通过以上描述就可以把实体信息输出UI控件或从UI控件输入数据到实体中。

输出格式控件:

       DateTimeToString birthdate = new DateTimeToString("{0:d}");

mEmpBinder.AddMapper(editBirthDate, "Text", "BirthDate",birthdate);

通过构造Changer来限制输出的格式。

验证规则添加:

       Changer除提供数据转换和输出格式控制外,还提供输入数据的验证功能。

StringChanger address = new StringChanger();

address.CastException = "请输入联系地址!";

address.Min = 1;

mEmpBinder.AddMapper(editAddress, "Text", "Address",address);

 

DateTimeToString birthdate = new DateTimeToString("{0:d}");

birthdate.CastException = "请输入1940-1-1至2010-1-1的日期!";

birthdate.Min = DateTime.Parse("1940-1-1");

birthdate.Max = DateTime.Parse("2010-1-1");

mEmpBinder.AddMapper(editBirthDate, "Text", "BirthDate",birthdate);

数据输入和输出:

       数据绑定器提供实体对象数据导入和导出功能:

              导入:

           try

        {

            Employee item = EmpBinder.Import();

        }

        catch (Exception e_)

        {

            HFSoft.Web.Scripts.RegisterScript.RegiPageClient(this,"error_",

            new HFSoft.Web.Scripts.AlertMessage(e_.Message));

        }

         导出:

         Employee emp = new Employee();

        emp.FirstName = "FanJH";

        emp.LastName = "henry";

        emp.BirthDate = DateTime.Parse("1997-1-1");

        EmpBinder.Export(emp);

 

以上描述只是实际应用的一部分,组件还在构建和完善

posted on 2006-10-16 13:34  henry  阅读(1446)  评论(0编辑  收藏  举报

导航