Схожу с ума от JQuery проверки и нокаута - PullRequest
11 голосов
/ 04 июня 2011

Я пытался делать это месяцами, месяцами, месяцами и месяцами.И я буквально на грани слез от попытки заставить Knockout работать на меня.

У меня есть посты, появившиеся в прошлом году, когда я пытался это сделать.Я просто не могу получить валидацию для работы с нокаутом и asp.net mvc.

Если я добавлю строку $.validator.unobtrusive.parse("#__frmAspect");, я получу подтверждение, но тогда оно не подчиняется обработчику отправки.Если я уберу это, он подчинится обработчику отправки, но не получит никакой проверки.

Это мой код - все это.(Я думаю)

Главный вид

http://pastie.org/2016031

Вид редактора

http://pastie.org/2016043

Просмотр модели

http://pastie.org/2016045

Контроллер и модель Binder

http://pastie.org/2016052

Выход HTML

http://pastie.org/2016100

Класс HtmlTags

http://pastie.org/2016107

Помощники

http://pastie.org/2016111

Я застрял наэто буквально на 8 месяцев.Кто-нибудь может мне помочь, пожалуйста!Все, что я хочу, это отправить данные обратно на сервер.Я не хочу ajax, я не хочу обратного вызова.Я не хочу ничего особенного.Я просто хочу отправить мою модель JSON обратно на сервер после надлежащей проверки клиента и получить данные.Это все, чего я хочу.Я не хочу использовать метод $.ajax.У меня есть причины, по которым я хочу сделать это таким образом, и они не имеют отношения к вопросу.

Ответ Р. П. Нимейеру

Да, это сработало !!!!!!!! Боже мой.Я в долгу перед тобой, последние 8 месяцев моей жизни.Я хочу отправить вам чизкейк, задушенный в сырых калориях вкуса и интернете.

Я чувствую, что могу ударить по экрану из-за того, как разочаровал меня эта проблема.Извините, если вопрос звучит грубо, но нигде в Интернете я не видел такого рода вещи.Я уверен, что любой другой разработчик может понять разочарование проблемы, которая, кажется, не имеет ответа.

Понятия не имею, как вы пришли к такому выводу, и я не совсем понимаю, почему это сработало.

Я попробовал то же самое с моделью представления объекта (где модель представления была не своим собственным объектом, а экземпляром другого объекта), и это не сработало.Другими словами, если я делаю ..

var aspect = function () { 
  this.Id = ko.observable(); 
 // other variables, using ';' and 'this' keyword 
 this.Save = function() { 
   alert('We got to the save function'); 
 } 
} 

var viewModel = new aspect(); 
ko.applyBindings(viewModel, $("#__frmAspect")[0]); 
// attach the jquery unobtrusive validator 
$.validator.unobtrusive.parse("#__frmAspect"); 
// bind the submit handler to unobtrusive validation. 
$("#__frmAspect").data("validator").settings.submitHandler = 
viewModel.Save; 

Этот подход не сработал.Могу ли я побеспокоить вас объяснить мне, что отличается и почему?Я полностью потерян.

1 Ответ

14 голосов
/ 04 июня 2011

Я думаю, что проблема в том, что у ненавязчивой библиотеки уже есть проверка правильности настройки в форме, поэтому вам действительно нужно войти и установить submitHandler как:

// attach the jquery unobtrusive validator
$.validator.unobtrusive.parse("#__frmAspect");

// bind the submit handler to unobtrusive validation.
$("#__frmAspect").data("validator").settings.submitHandler = viewModel.Save;

http://jsfiddle.net/rniemeyer/V8MhG/

...