0

根据 Breeze 文档,我有以下解决方案可以将任何客户端验证错误添加到fieldsWithErrors我的实体上的属性 ()。这很好用,我可以获取特定属性的相关错误并应用 css 类向用户指示验证错误。episodeManager是我的EntityManagerReminder是我的实体。

episodeManager.metadataStore.registerEntityTypeCtor("Reminder", sr.Reminder, function (entity) {

    entity.fieldsWithErrors = ko.observableArray([]);

    entity.entityAspect.validationErrorsChanged.subscribe(function () {

        entity.fieldsWithErrors.removeAll();

        var errors = entity.entityAspect.getValidationErrors();

        $.each(errors, function () {

            entity.fieldsWithErrors.push(this.propertyName);
        });
    });
});

我以自定义 .Net 属性的形式添加了一些服务器端验证(上面的客户端验证错误是 Breeze 将[Required]属性克隆到规则中,我没有自定义 Breeze 验证规则)。任何违反这些服务器端规则的行为都会在fail()之后的承诺中返回给 Breeze saveChanges()。我想不出一种干净的方法将它们fieldsWithErrors与任何客户端错误一起组合到我的实体属性中,就好像它们都是一样的。有没有更简单的方法来做到这一点?

4

1 回答 1

2

从 Breeze v 1.4.0 开始,您的服务器端验证失败应基于每个实体自动添加到客户端验证结果中(除了在 fail() 承诺中返回),因此您不必做任何事情别的。

我错过了什么吗?

于 2013-07-29T15:52:55.893 回答