生成的FormItems中validationError Notifier的目的是什么?

时间:2012-10-12 18:50:58

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

我已经针对SQL数据库中的表生成了FormItem。我正在查看FormItem生成的TableModification,我注意到一个有趣的可选参数Action validationErrorNotifier

如何使用此参数以及它带来了哪些好处?

1 个答案:

答案 0 :(得分:1)

假设您有一个包含两个电话号码字段的表单。如果两个电话号码没有匹配的区号,那么假设您希望后续Validation产生错误。您可以将validationErrorNotifier参数与bool结合使用,以确保只有当两个电话号码都有效时才执行后续Validation

var phonesInvalid = false;
var stack = ControlStack.CreateWithControls(
    myTableMod.GetPhone1FormItem( ..., validationErrorNotifier: () => phonesInvalid = true, validationList: myDataMod ).ToControl(),
    myTableMod.GetPhone2FormItem( ..., validationErrorNotifier: () => phonesInvalid = true, validationList: myDataMod ).ToControl()
);
formItemBlock.Add( FormItem.Create(
    "Phone Numbers",
    stack,
    validationGetter: control => new Validation(
        ( pbv, validator ) => {
            if( !phonesInvalid && myTableMod.Phone1.AreaCode != myTableMod.Phone2.AreaCode )
                validator.NoteErrorAndAddMessage( "Area codes must match." );
        },
        myDataMod
    )
) );