Breeze.js - 将客户端和服务器验证错误都添加到我的实体中

时间:2013-07-29 08:43:59

标签: validation breeze

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

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 cloning [Required]属性到规则中,我没有自定义Breeze验证规则)。任何违反这些服务器端规则的行为都会在fail()之后的saveChanges()承诺中返回给Breeze。我想不出一种干净的方法将这些组合到我的fieldsWithErrors实体属性以及任何客户端错误中,就好像它们都是一样的。有没有更简单的方法来做到这一点?

1 个答案:

答案 0 :(得分:2)

从Breeze v 1.4.0开始,您的服务器端验证失败应该基于每个实体自动添加到客户端validationResults(除了在fail()promise中返回),所以你不应该有做其他事情。

我错过了什么吗?