假设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”,主要验证将失败,因为破折号将字符串推到长度限制之外。您甚至不会使用其他验证方法。第一种方法不存在这个问题。