#asp.net-mvc #post #controller
#asp.net-mvc #Публикация #контроллер
Вопрос:
У меня есть ASP.NET Приложение MVC, в котором представление заполнено моделью, которой необходимо получить некоторые данные от пользователя. Кроме того, у меня также есть скрытый тег div, который содержит больше информации, но он должен быть виден только после того, как модель была отправлена контроллеру по POST-запросу, и после того, как он обработал информацию из модели, он должен изменить тег div на видимый. Есть какой-то способ сообщить представлению, что запрос был обработан, и сделать видимым тег div, оставшийся на той же странице. Я полагаю, что это похоже на частичную обратную отправку из ASP.NET.
Спасибо, Tamash
Ответ №1:
Да, это возможно с помощью некоторых функций AJAX. В моем примере я использую jQuery:
$.post('Controller/Action', $('#formId').serialize(), function() {
$('#yourDiv').show();
});
При этом используется jQuery для отправки данных, содержащихся в форме с HTML-идентификатором ‘FormID’, в URL-адрес ‘Contoller / Action’ и отображается div с идентификатором ‘yourDiv’ в случае успешного завершения запроса AJAX. Вызов $(‘#FormID’).serialize кодирует элементы формы в HTML-форме с идентификатором FormID для отправки в запросе AJAX.
Подробнее о jQuery и AJAX здесь
Комментарии:
1. Я пробовал это, но запрос POST запускается не вызовом ajax, а механизмом MVC по умолчанию. Как я мог это навязать?
2. Поместите обработчик событий javascript на запускающую кнопку отправки и предотвратите поведение по умолчанию в коде javascript.
3. Я установил событие onclick кнопки для функции ajax, но как я могу предотвратить механизм по умолчанию?
4. Вот сообщение в блоге, в котором показан полный пример того, как отправить форму через ajax: queness.com/post/160 / … и вот ссылка на документацию jQuery api.jquery.com/event.preventDefault