我需要将字段验证为Zip代码,并且我想使用为我正在构建表单的表生成的FormItem
- getter。没有生成“GetZipCodeZipFormItem
”FormItem
getter,但我注意到您可以使用Validator
类验证Zip代码。我只想用我的DataModification
手动添加它,但我没有引用从PostBackValueDictionary
控件获取值所需的FormItem
。
如何将此FormItem
验证为邮政编码?
答案 0 :(得分:1)
假设yourModObject.ZipCode
是一个字符串:
yourModObject.GetZipCodeFormItem(
true,
( value, label ) => new EwfTextBox( value ),
( control, pbv, subject, validator ) =>
validator.GetZipCode( new ValidationErrorHandler( subject ),
control.GetPostBackValue( pbv ),
true ).FullZipCode,
value: "",
validationList: yourDataModification )
另一种方法是:
yourModObject.GetZipCodeTextFormItem(
true,
true, // allow empty
value: "",
additionalValidationMethod: ( subject, validator ) =>
yourModObject.ZipCode = validator.GetZipCode( new ValidationErrorHandler( subject ),
yourModObject.ZipCode,
true ).FullZipCode,
validationList: yourDataModification )
第二种方法的一个缺点是主要验证(即在mod对象中存储值的逻辑)不知道它是正在输入的邮政编码,因此,例如,如果您的数据库字段有限制为9个字符(以容纳ZIP + 4)并且用户输入“12345-1234”,主要验证将失败,因为破折号将字符串推过长度限制。你甚至不会得到额外的验证方法。第一种方法不存在这个问题。