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... но я не уверен в этом...
Любая помощь будет большой, спасибо всем!
Ответы
Ответ 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 снова, возможно, на странице макета, и вы добавили его.