2010-07-26 35 views
13

Tôi đang cố gắng để vượt qua Json để Xem của tôi sử dụng ViewDataASP.NET MVC - đèo Json String để Xem dùng ViewData

khiển

ViewData("JsonRegionList") = Json(RegionService.GetActiveRegions()) 

xem

 $("input#UserRegion").autocomplete({ 
       source:"<%: ViewData("JsonRegionList").ToString %>", 
       minLength: 3, 

nhưng vấn đề tôi đang gặp phải là nguồn đầu ra trông giống như

 $("input#UserRegion").autocomplete({ 
       source:"System.Web.Mvc.JsonResult", 
       minLength: 3, 

rõ ràng là không đúng. Tôi thiếu một cái gì đó cơ bản?

Trả lời

19

Phương thức điều khiển Json() trả về một JsonResult, không giống như một chuỗi JSON. JsonResult giữ dữ liệu, nhưng dữ liệu thực sự được ghi trực tiếp vào phản hồi khi Công cụ Xem gọi JsonResult.ExecuteResult(). Đó là tất cả các thông tin có thể nhiều hơn bạn muốn có - điểm là gọi Json() trong một bộ điều khiển sẽ không cung cấp cho bạn một chuỗi JSON.

Nếu bạn chỉ muốn chuyển dữ liệu của bạn vào một chuỗi JSON, bạn có thể sử dụng JavaScriptSerializer, đó là những gì các phương pháp Json() sử dụng trong nội bộ:

JavaScriptSerializer serializer = new JavaScriptSerializer(); 
ViewData["JsonRegionList"] = serializer.Serialize(jsonRegionList); 
+0

'JavaScriptSerializer' không Defined. Tôi có cần tham khảo một hội đồng khác không? –

+0

trông giống như tôi đã phải thêm các System.Web.Extensions lắp ráp để dự án của tôi ... thử nghiệm ngay bây giờ. –

+0

Không gian tên nên là 'System.Web.Script.Serialization' và bạn sẽ tuần tự hóa' RegionService.GetActiveRegions() ' – JustinStolle

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