2012-09-24 66 views
15

Tôi đã dành 8 giờ hoặc hơn để cố gắng tìm ra điều này. Tôi đã xem nhiều giải pháp nhưng không thể nhận được kết quả tương tự. Tôi có một linh cảm nó có tất cả mọi thứ để làm với được tương đối mới để ASP.Net.Mảng bài đăng jQuery - ASP.Net MVC 4

Đây là câu hỏi mới nhất tôi đã thử bắt chước không có may mắn. https://stackoverflow.com/questions/10007722/post-array-as-json-to-mvc-controller#=

How to post an array of complex objects with JSON, jQuery to ASP.NET MVC Controller?

Basic Rundown của vấn đề: Tôi có một mảng các đối tượng json Tôi muốn vượt qua điều khiển của tôi. Khi tôi chuyển dữ liệu, nó cho phép nói ví dụ 3 mục, nhưng giá trị của chúng không được truyền hoặc nó chỉ cho thấy không có gì được thông qua. Firebug cho thấy nó thông qua nó vì vậy tôi giả định rằng một cái gì đó không được thiết lập đúng và nó không cho phép nó để thiết lập biến đó một cách chính xác trên mặt C#.

Tôi đã thử một vài điều và danh sách bệnh họ dưới đây: cài đặt 1: Tôi đã cố gắng chế giễu những gì tôi nhìn thấy ở liên kết thứ hai:

$.ajax({ 
     type: 'Post', 
     cache: false, 
     url: '/Workflow/Home/UpdateStepPositions', 
     data: { 'steps': ['1','2','3'] }, 
     async: false, 
     success: function (data) { 
      console.debug(data); 
     }, 
     error: function (data) { 
      console.debug(data); 
     } 
    }); 

Controller 
[HttpPost] 
    public ActionResult UpdateStepPositions(string[] steps){ 

     var bresults = new { 
      Success = false, 
      Message = "Unable to update step positions." 
     }; 

     return Json(bresults); 
    } 

tôi có thể thậm chí không nhận được rằng thiết lập đơn giản làm việc. . Nó được cho các chức năng và cho thấy không có gì trôi qua ....

Setup 2:

list = new Array(); 
    list.push({ "step": 1, "position": 1 }); 
    list.push({ "step": 2, "position": 2 }); 
    list.push({ "step": 3, "position": 3 }); 

    $.ajax({ 
     type: 'Post', 
     cache: false, 
     url: '/Workflow/Home/UpdateStepPositions', 
     data: JSON.stringify({ 'steps': list }), 
     async: false, 
     success: function (data) { 
      console.debug(data); 
     }, 
     error: function (data) { 
      console.debug(data); 
     } 
    }); 

    Controller 
    [HttpPost] 
    public ActionResult UpdateStepPositions(List<UpdatedSteps> steps){ 
     var bresults = new { 
      Success = false, 
      Message = "Unable to update step positions." 
     }; 

     return Json(bresults); 
    } 

    Class 
    public class UpdatedSteps { 
    public string Step { get; set; } 
    public string Position { get; set; } 
} 

bất cứ ai có thể giúp làm sáng w mũ tôi đang mất tích hoặc chỉ cho tôi đi đúng hướng? Hy vọng rằng một cái gì đó đơn giản của nó và chỉ là một sai lầm newbie!

+2

trừ khi thực sự cần thiết, bạn không nên sử dụng 'async: false' trong một gọi ajax. AJAX được cho là không đồng bộ, bằng cách tắt tính năng đó, bạn có thể khiến trình duyệt trở nên không đáp ứng trong suốt cuộc gọi ajax. – MrOBrian

Trả lời

38

MVC phát hiện loại dữ liệu mà nó nhận được theo contentType. ví dụ ở đây đang làm việc:

$(function() { 
    $.ajax({ 
     type: 'Post', 
     dataType: 'json', 
     url: '/Workflow/Home/UpdateStepPositions', 
     data: JSON.stringify({ steps: ['1', '2', '3'] }), 
     contentType: 'application/json; charset=utf-8', 
     async: false, 
     success: function (data) { 
      console.debug(data); 
     }, 
     error: function (data) { 
      console.debug(data); 
     } 
    }); 
}); 

Bây giờ tất cả mọi thứ ok với yêu cầu:

Content-Type:  application/json; charset=utf-8 
X-Requested-With: XMLHttpRequest 

và phản ứng:

Content-Type:  application/json; charset=utf-8 
+0

Tôi sẽ thử điều này và báo cáo lại. – Silent

+0

Ok Tôi đã sao chép và dán mã đó và đây là những gì tôi có trong bộ điều khiển, cùng một vấn đề mà tôi đã chiến đấu hầu hết trong ngày! steps = null – Silent

+0

@Austin Reynolds Xin lỗi, hãy thử giải pháp mới. – webdeveloper

Các vấn đề liên quan