2011-12-13 35 views
13

Im relatevely mới với Asp.net MVC3,ASP.NET Ajax.BeginForm gửi nhiều yêu cầu

Tôi có một hình thức xử lý với Ajax, như thế này:

@using (Ajax.BeginForm ("dtjson" , AjaxOptions mới {HttpMethod = "Post", UpdateTargetId = "detalle_tarifa", OnSuccess = "exito2", OnBegin = "bloquear"}))

Vấn đề của tôi là khi tôi gửi dữ liệu, nó sẽ gửi yêu cầu hai lần.

Cho phép xem qua chế độ xem.

Đây là hình thức:

enter image description here

ok, bây giờ quan điểm sau khi nộp:

enter image description here

Và cái này là để hiển thị firebug gỡ lỗi:

enter image description here

Trên bố trí, tôi có các tập tin 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> 

Và trên quan điểm (A Partial View), tôi có điều này:

<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> 

Nó có vẻ như đó là một vấn đề với jquery ... nhưng Im không chắc chắn về nó ...

Bất kỳ trợ giúp nào sẽ tuyệt vời, Cảm ơn mọi người!

+0

Có thể đăng các tệp javascript nào được bao gồm trong chế độ xem/bố cục của bạn? – nemesv

+0

tất nhiên là tôi đã làm được rồi! Tôi tìm thấy điều này có thể là một vấn đề với các tập tin jquery .. – mleger45

Trả lời

61

Bạn đã bao gồm jquery.unobtrusive-ajax.min.js hai lần một lần trong bố cục một lần trong một phần. Vì vậy, trình duyệt của bạn thực hiện các js bên trong hai lần mà sẽ đăng ký hai lần vào sự kiện nhấp vào biểu mẫu đó là lý do tại sao thực hiện hai POST thay vì một.
Vì vậy, bạn cần phải xóa jquery.unobtrusive-ajax.min.js từ một phần.

Lưu ý: Nếu bạn đang sử dụng một phần với bố cục, bạn không cần sao chép các j được bao gồm trong phần vì nó đã được bố cục thực hiện. Có một số bài viết hay về layoutspartials.

+0

Ok, nếu tôi không lặp lại js '.. họ sẽ không hoạt động trên trang .. Tôi đã thử nó. Bao gồm cả unobstrusive, bằng cách tôi loại bỏ nó ant thời gian này, nó sẽ gửi 3 yêu cầu ... – mleger45

+0

Tôi nghĩ rằng vấn đề đã làm với http: //bugs.jquery.com/ticket/4373, trừ khi mã máy chủ hoạt động tốt – mleger45

+0

Cảm ơn bạn Nemesv. Điều này đã giúp tôi giải quyết một vấn đề tôi đã bị mắc kẹt trong gần 2 ngày !! – jhartzell

2

Tôi trường hợp của tôi, tôi đã "quay lại Chế độ xem" thay vì "trả về một phần Xem".

2

Bạn đã thêm jquery.unobtrusive-ajax.js ba lần. Nó cũng đã xảy ra với tôi.

Kiểm tra cấu hình gói "~/ui/js/jquery.unobtrusive. *". trong trang của bạn, bạn đã thêm jquery.unobtrusive-ajax.js một lần nữa, có lẽ trong trang bố cục cũng như bạn đã thêm nó.