数据绑定、验证规则和输出格式控制集成
数据输入和输出在开发过程占据不少的代码编写量。以往很多情况数据输入、输入验证和数据输出、格式控制都是分散编写,这样对于维护非常不方便;于是就想出编写一个控制器来解决这些问题,由控制器集中统一地完成数据绑定(双向)、数据验证和输出格式控制;这样可以减少代码的编写同时也方便代码的维护。
这一次集成是基于数据绑定的扩展实现(数据绑定组件实现),原有数据绑定已经包括数据绑定(双向)和输出格式控的功能,这里主要加入了输入数据规则验证的处理。验证规则直接由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);
以上描述只是实际应用的一部分,组件还在构建和完善…