Tôi có một hành động điều khiển đó là để nhận được một số nguyên và một đối tượng, có chứa các thuộc tính khác nhau, một trong số đó là một danh sách chung của các đối tượng. Khi tôi gửi JSON cho hành động với một danh sách dân cư, mọi thứ đều ánh xạ chính xác và tôi nhận được một danh sách chứa đối tượng mà tôi đã đăng. Tuy nhiên, nếu mảng trống, hành động MVC liên kết thuộc tính với một đầu vào rỗng của một danh sách rỗng. Tôi muốn mảng trống để ánh xạ tới một mảng trống và không phải là rỗng, vì mảng trống trong trường hợp này có nghĩa là không có gì trong bộ sưu tập và một hàm rỗng có nghĩa là cơ sở dữ liệu cần được kiểm tra để xem có điều gì trước đó không được lưu trong bộ sưu tập, nhưng tôi không thể tìm ra những gì tôi cần thay đổi để làm cho nó được lập bản đồ đúng cách. Chúng tôi đang sử dụng Json.Net để làm serialization đối tượng cho các đối tượng trở về, nhưng tôi không nghĩ rằng nó đang được sử dụng cho deserialization đối tượng trên mô hình ràng buộc.Json trống mảng deserializing như null trong MVC
Đối tượng được thông qua:
public class ObjectInList
{
public decimal Value1 { get; set; }
public decimal Value2 { get; set; }
}
public class Criteria
{
public decimal? ANullableNumber { get; set; }
public IList<ObjectInList> ObjectsList { get; set; }
}
Json yêu cầu: "{\" id \ ": 137, \" Tiêu chí \ ": {\" ObjectsList \ ": []}}"
Điều khiển Tác vụ:
public ActionResult ProcessCriteria(int id, Criteria criteria)
{
return Json(_service.ProcessCriteria(id, criteria));
}
Hành động của bộ điều khiển là tôi nhận được giá trị thay vì danh sách trống trong đối tượng tiêu chí. Nó xảy ra cho dù tôi gửi null cho các thuộc tính khác hay không. Bạn không chắc chắn nếu nó xuống đối tượng là một IList và không phải là một IEnumerable? (Các phương pháp Json gói dịch vụ gọi là wrapper của chúng tôi để trả về một kết quả json bằng cách sử dụng Json.Net để serialise phản ứng - null là trong các đối tượng tiêu chí nhận được, không phải trong các đối tượng tiêu chuẩn nhận được, không phải trong sự trở lại.)
Tôi đoán nó là một cái gì đó khá đơn giản mà tôi đang thiếu, nhưng tôi không thể làm việc ra những gì, giúp đỡ rất nhiều đánh giá cao.
Dễ dàng hơn cho chúng tôi nếu bạn đặt một số mã. Một dòng mã là tốt hơn 100 từ: D –
Đồng ý, tuy nhiên trong trường hợp này, tôi không chắc nó sẽ giúp ích bao nhiêu, viết tắt toàn bộ bộ điều khiển/bộ điều khiển cơ sở và các bài viết liên quan đến json của tôi. Tôi sẽ thử và đăng một cái gì đó có ý nghĩa, nhưng cho đến lúc đó, json đang hiển thị một mảng trống, và trước khi nó được đăng và khi nó được liên kết với mô hình, List là một null chứ không phải là một danh sách trống. Các bộ phận của hệ thống phân cấp điều khiển được viết bởi các dev khác, vì vậy tôi không thể nói chắc chắn, nhưng tôi không thể tìm thấy việc thực hiện ghi đè của quá trình giải mã json, vì vậy tôi nghĩ đó là xử lý mặc định của json để mô hình ràng buộc. –
Kiểm tra câu hỏi này: http://stackoverflow.com/q/14203150/29555 và câu trả lời thứ hai – marto