diff --git a/projects/WebMVC/wwwroot/js/valid.js b/projects/WebMVC/wwwroot/js/valid.js
new file mode 100644
index 00000000..0666dde5
--- /dev/null
+++ b/projects/WebMVC/wwwroot/js/valid.js
@@ -0,0 +1,2 @@
+Vue.prototype.valid2 = function () {
+}
\ No newline at end of file
diff --git a/projects/WebMVC/wwwroot/router/shared/update.html b/projects/WebMVC/wwwroot/router/shared/update.html
index efb4e2b3..3af6837b 100644
--- a/projects/WebMVC/wwwroot/router/shared/update.html
+++ b/projects/WebMVC/wwwroot/router/shared/update.html
@@ -22,10 +22,10 @@
-
+
- {{getErrors(key)}}
+ {{getErrorList(key)}}
@@ -90,10 +90,21 @@
vm.data = response.data;
});
},
+ getSchema: function () {
+ return this.data.schema;
+ },
+ getModel: function () {
+ return this.data.model;
+ },
+ getErrors: function () {
+ return this.data.errors;
+ },
change: function (name) {
var vm = this;
- var value = this.data.model[name];
- var property = this.data.schema.properties[name];
+ var schema = this.getSchema();
+ var model = this.getModel();
+ var property = schema.properties[name];
+ var value = model[name];
var list = [];
list.push(
this.validInternal(property.required, name, o => Promise.resolve(value !== undefined && value !== null))
@@ -156,8 +167,9 @@
},
valid: function () {
var vm = this;
+ var schema = this.getSchema();
var list = [];
- _.forIn(this.data.schema.properties, function (value, key) {
+ _.forIn(schema.properties, function (value, key) {
list.push(vm.change(key));
});
return Promise.all(list);
@@ -167,11 +179,33 @@
var vm = this;
message = message || validator.message;
return valid().then(function (value) {
+ var error = Enumerable.from(vm.data.errors).firstOrDefault(o => o.key.toLowerCase() === name.toLowerCase());
if (value) {
- vm.removeError(name, message);
+ if (error) {
+ if (Enumerable.from(error.value.errors).any(o => o.errorMessage === message)) {
+ error.value.errors = Enumerable.from(error.value.errors).where(o => o.errorMessage !== message).toArray();
+ }
+ if (error.value.errors.length === 0) {
+ var index = _.findIndex(vm.data.errors, o => o.key.toLowerCase() === name.toLowerCase());
+ vm.getErrors().splice(index, 1);
+ }
+ }
}
else {
- vm.updateError(name, message);
+ if (!error) {
+ error = {
+ key: name,
+ value: {
+ errors: [{ errorMessage: message }]
+ }
+ };
+ vm.data.errors.push(error);
+ }
+ else {
+ if (!Enumerable.from(error.value.errors).any(o => o.errorMessage === message)) {
+ error.value.errors.push({ errorMessage: message });
+ }
+ }
}
});
}
@@ -180,37 +214,8 @@
camelCased: function (name) {
return name[0].toLowerCase() + name.substr(1);
},
- removeError: function (name, message) {
- var error = Enumerable.from(this.data.errors).firstOrDefault(o => o.key.toLowerCase() === name.toLowerCase());
- if (error) {
- if (Enumerable.from(error.value.errors).any(o => o.errorMessage === message)) {
- error.value.errors = Enumerable.from(error.value.errors).where(o => o.errorMessage !== message).toArray();
- }
- if (error.value.errors.length === 0) {
- var index = _.findIndex(this.data.errors, o => o.key.toLowerCase() === name.toLowerCase());
- this.data.errors.splice(index, 1);
- }
- }
- },
- updateError: function (name, message) {
- var error = Enumerable.from(this.data.errors).firstOrDefault(o => o.key.toLowerCase() === name.toLowerCase());
- if (!error) {
- error = {
- key: name,
- value: {
- errors: [{ errorMessage: message }]
- }
- };
- this.data.errors.push(error);
- }
- else {
- if (!Enumerable.from(error.value.errors).any(o => o.errorMessage === message)) {
- error.value.errors.push({ errorMessage: message });
- }
- }
- },
getValidationSummary: function (excludePropertyErrors) {
- var query = Enumerable.from(this.data.errors);
+ var query = Enumerable.from(this.getErrors());
if (excludePropertyErrors) {
query = query.where(o => o.key === '')
}
@@ -218,11 +223,11 @@
},
hasErrors: function (key) {
key = key.toLowerCase();
- return Enumerable.from(this.data.errors).any(o => o.key.toLowerCase() === key);
+ return Enumerable.from(this.getErrors()).any(o => o.key.toLowerCase() === key);
},
- getErrors: function (key) {
+ getErrorList: function (key) {
key = key.toLowerCase();
- return Enumerable.from(this.data.errors)
+ return Enumerable.from(this.getErrors())
.where(o => o.key.toLowerCase() === key).selectMany(o => o.value.errors).select(o => o.errorMessage).toArray().join(',');
},
hasPermission: function () {