本文目录 通过实例学习Fireasy开发(上篇) 通过实例学习Fireasy开发(中篇) 通过实例学习Fireasy开发(下篇) 通过实例学习Fireasy开发(补充) ...
本文目录
通过实例学习Fireasy开发(上篇)
通过实例学习Fireasy开发(中篇)
通过实例学习Fireasy开发(下篇)
通过实例学习Fireasy开发(补充)
前面的功能已经开发完成了,但是这里专门用一章来进行补充。
一、EasyUI验证
不知道你有没有发现,我们虽然在EmployeeMetada里加了验证特性RequiredAttribute、StringLengthAttribute,但是页面并没有在data-options里生成validType。这是由于少了Fireasy.Portal组件造成了。我们只需要把ValidateBoxSettingBinder和NumberBoxSettingBinder这两个类拷贝过来就行了。
ValidateBoxSettingBinder主要负责将基本的验证绑定到ValidateBoxSettings对象的ValidType属性中。
/// <summary> /// <see cref="ValidateBoxSettings"/> 的绑定者。 /// </summary> public class ValidateBoxSettingBinder : ISettingsBinder { public bool CanBind(ISettingsBindable settings) { return typeof(ValidateBoxSettings).IsAssignableFrom(settings.GetType()); } public void Bind(Type modelType, get='_blank'>string propertyName, ISettingsBindable settings) { //模型类型必须实现自 IEntity if (!typeof(IEntity).IsAssignableFrom(modelType)) { return; } //获取对应的依赖属性 var property = PropertyUnity.GetProperty(modelType, propertyName); if (property == null) { return; } var vsettings = settings as ValidateBoxSettings; //获取依赖属性所指定的验证特性 var validTypes = new List<string>(); foreach (var validation in ValidationUnity.GetValidations(property)) { ParseValidation(vsettings, validation, validTypes); } vsettings.ValidType = validTypes.ToArray(); } /// <summary> /// 解析 <see cref="ValidationAttribute"/> 对象。 /// </summary> /// <param name="settings"></param> /// <param name="validation">要解析的 <see cref="ValidationAttribute"/> 对象。</param> /// <param name="validTypes">如果 <paramref name="validation"/> 能与 EasyUI 的客户端验证所对应,则添加到 validType 属性中。</param> private void ParseValidation(ValidateBoxSettings settings, ValidationAttribute validation, List<string> validTypes) { //必填验证特性 var required = validation as RequiredAttribute; if (required != null) { settings.Required = true; return; } //长度验证特性 var stringLength = validation as StringLengthAttribute; if (stringLength != null) { validTypes.Add(string.Format("length[{0},{1}]", stringLength.MinimumLength, stringLength.MaximumLength)); return; } //电话验证特性 var telphone = validation as TelphoneAttribute; if (telphone != null) { validTypes.Add("phone"); return; } //手机验证特性 var mobile = validation as MobileAttribute; if (mobile != null) { validTypes.Add("mobile"); return; } //手机或电话验证特性 var telOrMobile = validation as TelphoneOrMobileAttribute; if (telOrMobile != null) { validTypes.Add("phoneOrMobile"); return; } //邮箱验证特性 var email = validation as EmailAttribute; if (email != null) { validTypes.Add("email"); return; } var ascii = validation as AsciiCodingAttribute; if (ascii != null) { validTypes.Add("ascii"); return; } var un = validation as UserNameAttribute; if (un != null) { validTypes.Add("username"); return; } var chinese = validation as ChineseCodingAttribute; if (chinese != null) { validTypes.Add("chinese"); } } }
原标题:通过实例学习Fireasy开发(补充)
关键词:
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。