Tôi đã phải vật lộn để tìm ra giải pháp cho vấn đề này.Đăng mảng dưới dạng JSON tới Bộ điều khiển MVC
Trong mã của tôi, tôi đang xây dựng một mảng của một đối tượng;
var $marks = [];
var mark = function (x, y, counter){
this.x = x;
this.y = y;
this.counter = counter;
}
$marks.push(new mark(1, 2, 0));
$marks.push(new mark(1, 2, 1));
$marks.push(new mark(1, 2, 2));
Bây giờ tôi muốn gửi dữ liệu này để một bộ điều khiển MVC, vì vậy tôi sẽ nghĩ rằng kiểu dữ liệu trong bộ điều khiển sẽ là một List<Mark> Marks
hoặc một mảng của Marks.
Để đăng dữ liệu, tôi đã thử;
var json = JSON.stringify($marks);
$.post('url', json).done(function(data){ /* handle */ });
HOẶC
var json = { Marks: $marks };
$.post('url', json).done(function(data){ /* handle */ });
Cách thứ hai, khi nhìn vào các dữ liệu đăng, trông như thế này
Marks[0][x]: 1
Marks[0][y]: 2
Marks[0][counter]: 0
Marks[0][x]: 1
Marks[0][y]: 2
Marks[0][counter]: 1
Marks[0][x]: 1
Marks[0][y]: 2
Marks[0][counter]: 2
Nhưng tôi không chắc chắn làm thế nào để dịch này vào một đối tượng mạnh mẽ gõ trong bộ điều khiển?
Trình điều khiển của tôi trông như thế này;
[HttpPost]
public ActionResult JsonSaveMarks(List<Mark> Marks){
// handle here
}
Lớp Mark của tôi trông như thế này;
public class Mark{
public string x { get; set; }
public string y { get; set; }
public string counter { get; set; }
}
Tôi đã đọc qua những vấn đề tương tự khác về việc tạo ra một phong tục JsonFilterAttribute, hoặc bằng cách sử dụng lớp System.Web.Script.Serialization.JavaScriptSerializer, nhưng tôi không thể nhận được bất cứ điều gì để làm việc
Có một cái gì đó rõ ràng tôi đang thiếu ở đây? Tôi đã nhận DataType trong bộ điều khiển hoàn toàn sai? Làm cách nào để chuyển đổi dữ liệu này được đăng thành đối tượng được nhập mạnh?
Nhiều Cảm ơn
Lớp Mark của bạn trong MVC trông như thế nào? – Pbirkoff
@Pbirkoff Tôi đã cập nhật câu hỏi với lớp học –
kiểm tra câu hỏi này, đặc biệt là câu trả lời đầu tiên: http://stackoverflow.com/questions/4789481/post-an-array-of-objects-via-json-to-asp -net-mvc3 – Pbirkoff