ASP.NET AJAX.BeginForm отправляет несколько запросов - PullRequest
15 голосов
/ 14 декабря 2011

Я относительно новый с Asp.net MVC3,

У меня есть форма, обработанная с помощью Ajax, например:

@ using (Ajax.BeginForm ("dtjson", новые AjaxOptions {HttpMethod = "Post", UpdateTargetId = "detalle_tarifa", OnSuccess = "exito2", OnBegin = "bloquear"}))

Моя проблема в том, что когда я отправляю данные, он отправляет запрос дважды.

Давайте посмотрим на вид.

Это форма:

enter image description here

хорошо, теперь представление после отправки:

enter image description here

А вот этот, чтобы показать отладку firebug:

enter image description here

На макете у меня есть эти файлы javascript ..

   <script src="@Url.Content("~/Scripts/jquery-ui.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.windows-engine.js")" type="text/javascript"></script>
       <script src="@Url.Content("~/Scripts/jquery.jqDock.js")" type="text/javascript"></script>
       <script src="@Url.Content("~/Scripts/jquery.jqDock.min.js")" type="text/javascript"></script>
       <script src="@Url.Content("~/Scripts/jquery.tablePagination.0.4.js")" type="text/javascript"></script>
       <script src="@Url.Content("~/Scripts/jquery.tools.min.js")" type="text/javascript"></script>
       <script src="@Url.Content("~/Scripts/jquery.cookie.js")" type="text/javascript"></script>
       <script src="@Url.Content("~/Scripts/jquery.treeview.js")" type="text/javascript"></script>
       <script src="@Url.Content("~/Scripts/jquery.treeview.edit.js")" type="text/javascript"></script>
        <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>

А на виде (частичный вид) у меня это:

<script src="@Url.Content("~/Scripts/jquery-1.4.4.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-ui.js")" type="text/javascript"></script>
<script type="text/javascript" src=@Url.Content("~/Content/tinymce/jscripts/tiny_mce/jquery.tinymce.js")></script>
<script type="text/javascript" src=@Url.Content("~/Content/tinymce/jscripts/tiny_mce/tiny_mce.js")></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<script src="@Href("~/Scripts/jquery.uploadify.js")" type="text/javascript"></script>
<script src="@Href("~/Scripts/jquery.scrollTo.js")" type="text/javascript"></script>
<script src="@Href("~/Scripts/jquery.blockUI.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="/Scripts/jquery.cookie.js" type="text/javascript"></script>
<script src="/Scripts/jquery.treeview.js" type="text/javascript"></script>
<script src="/Scripts/jquery.treeview.edit.js" type="text/javascript"></script>

Кажется, это проблема с jquery ... но я не уверен в этом ...

Любая помощь была бы отличной, спасибо всем!

Ответы [ 3 ]

61 голосов
/ 14 декабря 2011

Вы включили jquery.unobtrusive-ajax.min.js дважды в макет, один раз в партиал. Таким образом, ваш браузер дважды выполняет js внутри, что будет дважды подписываться на событие щелчка формы, поэтому выполняем два POST вместо одного.
Поэтому вам нужно удалить jquery.unobtrusive-ajax.min.js из частичного.

Примечание: если вы используете партиал с макетом, вам не нужно дублировать js, включенные в партиал, потому что это уже сделано макетом. Есть несколько хороших статей о макетах и частичных .

3 голосов
/ 07 сентября 2017

Вы добавили jquery.unobtrusive-ajax.js три раза. Это случилось и со мной.

Проверьте в конфигурации пакета " ~ / ui / js / jquery.unobtrusive. *". * является подстановочным знаком, чтобы соответствовать как уменьшенной, так и не минимизированной версии Поскольку ваше решение содержит оба файла, оно добавляет «jquery.unobtrusive-ajax.js» и «jquery.unobtrusive-ajax.min.js». Снова на странице просмотра или странице макета вы добавили jquery.unobtrusive-ajax.js / jquery.unobtrusive-ajax.min.js, который трижды делает запрос / публикацию

2 голосов
/ 05 декабря 2015

В моем случае у меня было «return View» вместо «return PartialView».

...