1

我需要将一个字段验证为邮政编码,并且我想使用FormItem为我正在为其构建表单的表生成的-getter。没有生成“ GetZipCodeZipFormItem” getter,但我注意到您可以使用该类FormItem验证邮政编码。Validator我只是用 my 手动添加它,DataModification但我没有对从' 控件PostBackValueDictionary获取值所需的引用。FormItem

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

4

1 回答 1

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 对象中存储值的逻辑)不知道输入的是邮政编码,因此,例如,如果您的数据库字段的限制为九个字符(以容纳 ZIP+4)并且用户输入“12345-1234”,主要验证将失败,因为破折号将字符串推过长度限制。您甚至不会使用其他验证方法。第一种方法不存在这个问题。

于 2012-09-06T00:38:41.443 回答