Форма отправляется дважды после обновления из ASP MVC 3 Preview до Beta - PullRequest
16 голосов
/ 31 октября 2010

После обновления ASP MVC с 3 Preview до 3 Beta я вижу странное поведение в моих формах Ajax.

@using(Ajax.BeginForm("New", new AjaxOptions() {OnSuccess = "onAjaxSuccess", OnFailure = "onAjaxFailure", OnBegin = "onAjaxBegin", HttpMethod = "Post"})) {}

<form action="/Order/New" data-ajax="true" data-ajax-begin="onAjaxBegin" data-ajax-failure="onAjaxFailure" data-ajax-method="Post" data-ajax-success="onAjaxSuccess" method="post"></form>

Я поместил alert внутри своей функции onAjaxBegin, и меня дважды запускают, каждый раз, когда я нажимаю кнопку подтверждения.

Кто-нибудь еще видел такое поведение? Я ничего не изменил в коде после обновления, и он прекрасно работал до обновления.

Ответы [ 13 ]

0 голосов
/ 16 июня 2013

Это может быть полезно для кого-то, кто имеет сценарий, похожий на тот, что у меня есть:

На моей странице форма редактирования открывает частичное представление внутри модального всплывающего окна пользовательского интерфейса Kendo, которое динамически загружает код формы, включая jquery.unobtrusive-ajax.js. С этим параметром, который может относиться к любому всплывающему окну, например, к jQuery UI, а не только к Kendo UI, поведение отправки формы выглядит следующим образом:

При первом открытии всплывающего окна отправка формы вызывает один вызов кода контроллера (на стороне сервера). Все идет нормально. Однако во второй раз, когда открывается окно (без закрытия страницы контейнера), отправка формы вызывает контроллер 2 раза. Впоследствии каждое повторное открытие всплывающего окна вызывает дополнительную загрузку кода jquery.unobtrusive-ajax.js, что, в свою очередь, вызывает дополнительный нежелательный вызов контроллера при каждой отдельной отправке формы.

Чтобы устранить проблему, я переместил включение jquery.unobtrusive-ajax.js из частичного представления всплывающего окна на главную страницу. Однако это привело к тому, что проверка на стороне клиента перестала работать, и чтобы исправить это, я использовал решение, представленное здесь: проверка на стороне клиента с динамически добавленным полем , которое ссылается на этот пост: http://xhalent.wordpress.com/2011/01/24/applying-unobtrusive-validation-to-dynamic-content/

0 голосов
/ 22 января 2013

У меня была такая же проблема.У меня было частичное представление входа в систему на главной странице, которое включало jquery.unobtrusive-ajax.min.js.У меня также был этот файл включен в моем представлении.Итак, я удалил один, и проблема решена.

0 голосов
/ 26 сентября 2011

У меня тоже была именно эта проблема по совершенно другой причине. Я включил ссылку на скрипт на jquery.unobtrusive-ajax.min.js в обновленном div. Перемещение за пределы div исправило это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...