2013-08-29 6 views
0

Я использую asp.net mvc3 для моего проекта вместе с jQuery ajax методами. Я смог проверить входные данные, но если я нажму кнопку «пост», данные будут опубликованы, даже если форма содержит недопустимые данные. Я знаю, что это можно решить с помощью кнопки отправки. Но я хочу использовать свои jquery-методы. Я использую проверку на стороне клиента asp.net mvc3. Вот мой код, чтобы публиковать данные из формы.Проверка на стороне клиента в asp.net mvc3

//jQuery 
function PostForm(Url, FormID, Title) {  

    var dataTOPost = '#' + FormID; // Id of particular form to post 

    $.ajax({ 
     url: Url, 
     type: 'POST', 
     data: $(dataTOPost).serialize(), 
     beforeSend: function() { 
      //display some loading pics 
     } 
    }).done(function (result) { 

     //if success do something 
    }); 

} 

И я использовал это следующим образом

<a onclick="PostForm('someurl','myform', 'Title of dialog');" >Submit</a> 

Вот снимок экрана части формы проверяемого. Даже если форма содержит недопустимые данные, форма публикуется. Как я могу это решить. Благодарю.

Certain part of form being validated

+0

Возможно, вам придется вручную проверить, превышает ли длина сообщений об ошибках значение нуля и возвращает false. – ssilas777

+0

Если у вас есть проверки, определенные в вашей модели, и вы ссылаетесь на jquery, jquery.validate, jquery.validate.unobtrusive, попробуйте добавить обработчик отправки для формы внутри функции postform. Ur. Помогите! –

+0

@ ssilas777, это займет много времени. Мне было интересно, есть ли встроенные функции в mvc3 для проверки достоверности данных, которые вы отправляете. И Post только тогда, когда данные действительны, иначе выведите сообщение об ошибке msg или что-то в этом роде. – Redone

ответ

5

Вы должны разобрать форму для проверки с помощью:

$.validator.unobtrusive.parse($(form)); 

А потом спросить, действительно:

$(form).valid(); 

Ex:

function PostForm(Url, FormID, Title) {  

     var dataTOPost = '#' + FormID; // Id of particular form to post 

     $.validator.unobtrusive.parse($(dataTOPost)); 

     if ($(dataTOPost).valid()){ 

      $.ajax({ 
       url: Url, 
       type: 'POST', 
       data: $(dataTOPost).serialize(), 
       beforeSend: function() { 
        //display some loading pics 
       }, 
       done: function (result) { 
        //if success do something 
       }}); 
     }else{ 
     console.log("invalid form"); 
     } 
    } 
+0

Это работает. Благодаря! Кристи Пуфу. – Redone

0
$("a").click(function(event) { 
    //cancel submit click 
    event.preventDefault(); 
    //check errors 
    ... 
    //Post your form 
    PostForm('someurl','myform', 'Title of dialog'); 
}); 
Смежные вопросы