Tôi đang tìm một giải pháp để POST một mảng đối tượng tới MVC3 qua JSON.Đăng một mảng đối tượng qua JSON tới ASP.Net MVC3
Ví dụ mã Tôi đang làm việc tắt của: http://weblogs.asp.net/scottgu/archive/2010/07/27/introducing-asp-net-mvc-3-preview-1.aspx
JS:
var data = { ItemList: [ {Str: 'hi', Enabled: true} ], X: 1, Y: 2 };
$.ajax({
url: '/list/save',
data: JSON.stringify(data),
success: success,
error: error,
type: 'POST',
contentType: 'application/json, charset=utf-8',
dataType: 'json'
});
ListViewModel.cs:
public class ListViewModel
{
public List<ItemViewModel> ItemList { get; set; }
public float X { get; set; }
public float Y { get; set; }
}
ItemViewModel.cs:
public class ItemViewModel
{
public string Str; // originally posted with: { get; set; }
public bool Enabled; // originally posted with: { get; set; }
}
ListController.cs:
public ActionResult Save(ListViewModel list)
{
// Do something
}
Kết quả của POST này:
danh sách được thiết lập, với một ListViewModel
X và Y của nó thuộc tính được thiết lập
Thuộc tính ItemList cơ bản được thiết lập
Các ItemList chứa một mục, vì nó cần
Mục trong Danh sách mục đó chưa được khởi tạo. Str là null và Enabled là false.
Nói cách khác, đây là những gì tôi nhận được từ mô hình MVC3 của ràng buộc:
list.X == 1
list.Y == 2
list.ItemList != null
list.ItemList.Count == 1
list.ItemList[0] != null
list.ItemList[0].Str == null
Nó sẽ xuất hiện MVC3 JsonValueProvider không hoạt động cho các đối tượng phức tạp. Làm cách nào để làm việc này? Tôi có cần phải sửa đổi các MVC3 JsonValueProvider hiện tại và sửa chữa nó? Nếu vậy, làm thế nào để tôi nhận được nó và thay thế nó trong một dự án MVC3?
câu hỏi liên quanStackOverflow Tôi đã theo đuổi vô ích:
Asp.net Mvc Ajax Json (post Array) Sử dụng MVC2 và mã hóa dựa trên hình thức cũ - cách tiếp cận mà không thành công với một đối tượng có chứa một mảng các đối tượng (JQuery thất bại trong việc mã hóa nó đúng cách).
Post an array of complex objects with JSON, JQuery to ASP.NET MVC Controller Sử dụng hack Tôi muốn tránh nơi Controller thay vào đó nhận được một chuỗi đơn giản mà sau đó tự deserializes chính nó, thay vì tận dụng khung.
MVC3 RC2 JSON Post Binding not working correctly Không có bộ kiểu nội dung - được đặt trong mã của tôi.
How to post an array of complex objects with JSON, jQuery to ASP.NET MVC Controller? Anh chàng tội nghiệp này phải viết JsonFilter để phân tích mảng. Một hack tôi muốn tránh.
Vì vậy, làm cách nào để thực hiện điều này?
Cập nhật: Tôi đã đào sâu vào JsonValueProviderFactory. Nó chính xác tiêu thụ tài sản "str" và thêm nó vào từ điển sao lưu như Key = "ItemList [0] .Str", Value = "hi", có vẻ chính xác. ModelBinder? –
Bạn thưa bạn, chỉ nhận được một upvote và một ngôi sao để thực hiện tuyệt vời của bạn của một chồng tràn câu hỏi! :) – Moulde
Tương tự ở đây, đây là một trong những cuối cùng đã làm cho nó làm việc cho tôi. Cảm ơn! – Otake