Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Validation Breeze.js-将客户端和服务器验证错误都添加到我的实体中_Validation_Breeze - Fatal编程技术网

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

Validation Breeze.js-将客户端和服务器验证错误都添加到我的实体中,validation,breeze,Validation,Breeze,基于Breeze文档,我有以下解决方案,可以将任何客户端验证错误添加到实体的属性(fieldsWithErrors)中。这很有效,我可以获取特定属性的相关错误,并应用css类向用户指示验证错误eposodemanager是我的EntityManager和提醒是我的实体 episodeManager.metadataStore.registerEntityTypeCtor("Reminder", sr.Reminder, function (entity) { entity.fields

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

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克隆
[必需]
属性,我没有自定义的Breeze验证规则)。任何违反这些服务器端规则的行为都会在
saveChanges()
之后的
fail()
promise中返回给Breeze。我想不出一种干净的方法来将这些错误与任何客户端错误一起合并到我的
字段switherrors
实体属性中,就好像它们都是一样的。有没有更简单的方法

从Breeze v 1.4.0开始,您的服务器端验证失败应自动添加到每个实体的客户端验证结果中(除了在fail()promise中返回),因此您不必执行任何其他操作


我错过什么了吗

不,一点也不缺。升级到1.4.0后,出现了。有史以来最简单的修复方法:)虽然所有的错误都无法观测到,但仍然需要创建我自己的,对吗?是的,没错。请注意,您可以通过侦听新的EntityManager.validationErrorsChanged事件来保持自定义可观察错误的同步。