Подтвердить что ты не робот

ASP.NET AJAX.BeginForm отправляет несколько запросов

Im relatevely new с Asp.net MVC3,

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

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

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

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

Это форма:

enter image description here

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

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>

И на вид (A Partial View) у меня есть следующее:

<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" [email protected]("~/Content/tinymce/jscripts/tiny_mce/jquery.tinymce.js")></script>
<script type="text/javascript" [email protected]("~/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... но я не уверен в этом...

Любая помощь будет большой, спасибо всем!

4b9b3361

Ответ 1

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

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

Ответ 2

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

Ответ 3

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

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