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」と入力した場合、ダッシュが文字列を長さの制限を超えてプッシュするため、一次検証は失敗します。追加の検証方法に到達することすらできません。この問題は、最初のアプローチでは存在しません。