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