2012-01-26 34 views

Trả lời

8

Bạn có thể sử dụng lớp JavaScriptSerializer được tích hợp sẵn trong khung công tác. Ví dụ:

var serializer = new JavaScriptSerializer(); 
string json = serializer.Serialize(new { param1 = "data1", param2 = "data2" }); 

sản lượng:

{"param1":"data1","param2":"data2"} 

Nhưng kể từ khi bạn nói về trở về JSON trong ASP.NET MVC 3 có sẵn trong máy kỹ thuật cho phép bạn trực tiếp trở về đối tượng và có tiềm ẩn cơ sở hạ tầng chăm sóc serializing đối tượng này vào JSON để tránh gây ô nhiễm mã của bạn với hệ thống ống nước như vậy.

Ví dụ trong ASP.NET MVC 3, bạn chỉ cần viết một hành động điều khiển trả về một JsonResult:

public ActionResult Foo() 
{ 
    // it's an anonymous object but you could have used just any 
    // view model as you like 
    var model = new { param1 = "data1", param2 = "data2" }; 
    return Json(model, JsonRequestBehavior.AllowGet); 
} 

Bạn không còn cần phải lo lắng về hệ thống ống nước. Trong ASP.NET MVC bạn có các hành động điều khiển trả về các kết quả hành động và bạn chuyển các mô hình xem cho các kết quả hành động đó. Trong trường hợp của JsonResult nó là cơ sở hạ tầng cơ bản sẽ chăm sóc serializing các mô hình xem bạn đã chuyển đến một chuỗi JSON và ngoài việc thiết lập đúng các tiêu đề phản ứng Content-Type để application/json.

+0

Ghi chú rằng IE là khá tích cực về các yêu cầu bộ nhớ đệm GET. Thuộc tính '[OutputCache]' thường sẽ được yêu cầu. – jgauffin

2

Cách đơn giản nhất nó có thể là như thế này:

public JsonResult GetData() 
{  
    var myList = new List<MyType>(); 

    //populate the list 

    return Json(myList); 
} 
Các vấn đề liên quan