Привет, я использую удаленную проверку с правилами проверки нокаута, чтобы проверить, будет ли клиент забронирован одновременно с предлагаемой датой. Я, наконец, получил viewmodel отправки данных в метод проверки контроллера, и метод возвращает true или false, однако я начал замечать, что обратный вызов не останавливал пользователя от сохранения, если клиент недействителен.Удаленная проверка с нокаутом в MVC 4, разрешение недействительных данных для сохранения
Я нашел это, заменив условия и разрешив методу контроллера возвратить false. Я отлаживал клиентскую сторону и обнаружил, что переменная обратного вызова была фактически ложной, но я не получал сообщение об ошибке messa и не останавливал m от сохранения назначение.
Мой вопрос: я пропустил кусок кода, который позволяет это или есть ошибка, которую мне не хватает?
ViewModel правило проверки:
ko.validation.rules['validateClientasync'] = {
async: true,
message: 'Client is already booked in at this time!',
validator: function (val, parms, callback) {
var defaults = {
url: '/Appointments/CheckClient/',
type: 'POST',
contentType: 'application/x-www-form-urlencoded',
success: function (data) {
callback(/* true or false depending on what you get back in data */);
}
};
if (parms.data != undefined && parms.data.appointment != undefined) {
var appointment = ko.toJS(parms.data.appointment);
$.ajax({
url: '/Appointments/CheckClient/',
type: 'post',
contentType: 'application/x-www-form-urlencoded',
data: ko.toJS(parms.data.appointment),
success: function(data) {
callback(/* true or false depending on what you get back in data */);
}
});
}
}
};
ko.validation.registerExtenders();
self.appointment = {
id: appointment.id,
start: ko.observable(appointment.start),
end: ko.observable(appointment.end),
text: ko.observable(appointment.text),
clientid: ko.observable(appointment.clientid).extend({
validateClientasync: {
data: self
}
}),
employeeid: ko.observable(appointment.employeeid),
roomid: ko.observable(appointment.roomid),
fee: ko.observable(appointment.fee).extend({min: 10})
};
Где обратный вызов и делает это на самом деле вернуть ложь, если это необходимо ? – Neps