1

Привет, я использую удаленную проверку с правилами проверки нокаута, чтобы проверить, будет ли клиент забронирован одновременно с предлагаемой датой. Я, наконец, получил 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}) 
}; 
+0

Где обратный вызов и делает это на самом деле вернуть ложь, если это необходимо ? – Neps

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^