基于Breeze文档,我有以下解决方案将任何客户端验证错误添加到我的实体上的属性(fieldsWithErrors
)。这很好用,我可以获取特定属性的相关错误,并应用css类来指示用户的验证错误。 episodeManager
是EntityManager
,Reminder
是我的实体。
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
实体属性以及任何客户端错误中,就好像它们都是一样的。有没有更简单的方法来做到这一点?
答案 0 :(得分:2)
从Breeze v 1.4.0开始,您的服务器端验证失败应该基于每个实体自动添加到客户端validationResults(除了在fail()promise中返回),所以你不应该有做其他事情。
我错过了什么吗?