1

フィールドを郵便番号として検証する必要があり、FormItemフォームを作成するテーブル用に生成された-getterを使用したいと思います。「GetZipCodeZipFormItem」ゲッターは生成されていませんが、クラスFormItemを使用して郵便番号を検証できることに気付きました。Validatormyを使用して手動で追加するだけですが、のコントロールから値を取得するために必要なDataModification参照がありません。PostBackValueDictionaryFormItem

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 )

2番目のアプローチの欠点の1つは、一次検証(つまり、modオブジェクトに値を格納するロジック)が、入力されているのが郵便番号であることを認識しないことです。たとえば、データベースフィールドに次の制限がある場合9文字(ZIP + 4に対応)でユーザーが「12345-1234」と入力した場合、ダッシュが文字列を長さの制限を超えてプッシュするため、一次検証は失敗します。追加の検証方法に到達することすらできません。この問題は、最初のアプローチでは存在しません。

于 2012-09-06T00:38:41.443 に答える