Former-commit-id: e12a89f36956ce72a6c1ff3ef9aa4c7484f5ad25
Former-commit-id: 904f17d13ce2ac7ee44e1f5a8de756cd76d8f2dc
TSXN
wanggang 5 years ago
parent c37a446925
commit b2ddc777a0

@ -31,7 +31,7 @@ namespace Application.Models
[MaxLength(64, ErrorMessage = "{0}最大长度为{1}")]
[Required(ErrorMessage = nameof(RequiredAttribute))]
//for temp test start
//[Remote("Valid", "Ajax", "Admin", AdditionalFields = "CategoryNumber", ErrorMessage = "test ajax valid")]
[Remote("Valid", "Node", "Admin", AdditionalFields = "CategoryNumber", ErrorMessage = "test ajax valid")]
//[Remote("CronValid", "Ajax", "Admin")]
//for temp test end
public string Name { get; set; }

@ -9,6 +9,7 @@ using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace IoT.Shared.Areas.Admin.Controlls
{
@ -20,6 +21,12 @@ namespace IoT.Shared.Areas.Admin.Controlls
{
}
public async Task<IActionResult> Valid(string name)
{
await Task.Delay(3000);
return Json(name=="123");
}
public override string GetNodeNumber(EditNodeModel model)
{
return model.Number;

@ -89,6 +89,9 @@
});
},
change: function (name) {
this.changeInternal(name, false);
},
changeInternal: function (name, submit) {
var vm = this;
var value = this.data.model[name];
var property = this.data.schema.properties[name];
@ -109,8 +112,7 @@
this.validInternal(property.rangelength, name, o => value.length >= property.length.min && value.length <= property.length.max);
this.validInternal(property.range, name, o => parseFloat(value) >= property.range.min && parseFloat(value) <= property.range.max);
this.validInternal(property.equalTo, name, o => o === vm.data.model[vm.camelCased(name)]);
}
this.validInternal(property.remote, name, o => {
this.validInternal(property.remote, name, async o => {
var url = property.remote.url + '?' + name + '=' + value;
if (property.remote.additionalFields) {
var keys = property.remote.additionalFields.split(',');
@ -120,30 +122,36 @@
}
}
axios.get(url).then(function (response) {
vm.removeError(name);
if (response.data !== true) {
var message = response.data === false ? property.remote.message : response.data;
vm.updateError(name, message);
vm.updateError(name, 'error');
}
}).catch(function (error) {
vm.removeError(name);
vm.updateError(name, 'network error');
else {
vm.removeError(name,'loading');
}
vm.removeError(name,'loading');
}).catch(function () {
vm.updateError(name, 'error');
});
return false;
}, 'loading');
console.log(this.data.errors);
},'loading');
}
},
valid: function () {
var vm = this
_.forIn(this.data.schema.properties, function (value, key) {
vm.changeInternal(key,true);
});
return this.data.errors.length === 0;
},
validInternal: function (validator, name, valid, message) {
if (!validator) {
return;
}
var property = this.data.schema.properties[name];
message = message || validator.message;
if (valid()) {
this.removeError(name);
this.removeError(name,message);
}
else {
message = message || validator.message;
this.updateError(name, message);
}
},
@ -153,9 +161,14 @@
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());
@ -174,13 +187,6 @@
}
}
},
valid: function () {
var vm = this
_.forIn(this.data.schema.properties, function (value, key) {
vm.change(key);
});
return this.data.errors.length === 0;
},
getValidationSummary: function (excludePropertyErrors) {
var query = Enumerable.from(this.data.errors);
if (excludePropertyErrors) {
@ -215,9 +221,12 @@
return key !== 'id';
},
onSubmit: function (e) {
if (this.valid()) {
var vm = this;
axios.post(e.target.action, this.data.model).then(function (response) {
new Promise(function (resolve, reject) {
vm.valid();
}).then(function () {
if (vm.data.errors.length === 0) {
axios.post(e.target.action, vm.data.model).then(function (response) {
if (response.status === 204) {
var url = '/router/shared/list.html?entity=' + vm.entity;
setTimeout(function () {
@ -229,6 +238,7 @@
}
});
}
});
}
}
}

Loading…
Cancel
Save