如何使用FormItem-getter添加自定义验证

时间:2012-09-03 14:34:40

标签: c# asp.net validation enterprise-web-library

我需要将字段验证为Zip代码,并且我想使用为我正在构建表单的表生成的FormItem - getter。没有生成“GetZipCodeZipFormItemFormItem getter,但我注意到您可以使用Validator类验证Zip代码。我只想用我的DataModification手动添加它,但我没有引用从PostBackValueDictionary控件获取值所需的FormItem

如何将此FormItem验证为邮政编码?

1 个答案:

答案 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”,主要验证将失败,因为破折号将字符串推过长度限制。你甚至不会得到额外的验证方法。第一种方法不存在这个问题。