2013-05-31 3 views
5

{Извините, новый для JSON} Мне нужно собрать массив ресурсов (пользователей) и передать его моему представлению, может быть, лучше, чем то, что ive сделано ниже? (Demo)Подробнее Элегантный способ возврата массива json в ASP.NET MVC

Моя модель просто

public class ScheduleUsers 
    { 
     public string Resource{ get; set; } 
} 

На мой контроллер

var users = new JsonArray(
       new JsonObject(
       new KeyValuePair<string,JsonValue>("id","1"), 
       new KeyValuePair<string,JsonValue>("name","User1")), 
       new JsonObject(
       new KeyValuePair<string, JsonValue>("id", "2"), 
       new KeyValuePair<string, JsonValue>("name", "User2")) 
       ); 
      model.Resources = users.ToString(); 
+1

Я люблю анонимные типы для быстрого проектирования, например, 'return Json (new {foo =" bar "})'. [Json.NET] (http://james.newtonking.com/pages/json-net.aspx) также довольно популярен и дает вам множество опций. –

ответ

13

Почему вы не просто возвращает список сущностей в результате JSON, как:

public class CarsController : Controller 
{ 
    public JsonResult GetCars() 
    { 
     List<Car> cars = new List<Car>(); 
     // add cars to the cars collection 
     return this.Json(cars, JsonRequestBehavior.AllowGet); 
    } 
} 

Он автоматически преобразуется в JSON.

+0

Итак, я сделал это и изменил model.Resources = GetResources(). ToString(); но при просмотре вывода html я получаю ресурсы: System.Web.Mvc.JsonResult –

+0

Вам лучше показать свой новый код ... –

+2

** добавить ** 'return this.Json (cars, JsonRequestBehavior.AllowGet);' иначе вы get [this] (http://stackoverflow.com/questions/5588143/ef-4-1-code-first-json-circular-reference-serialization-error) ошибка – stom

2

Я сделал это, и это работает

JavaScriptSerializer js = new JavaScriptSerializer(); 
       StringBuilder sb = new StringBuilder(); 
       //Serialize 
       js.Serialize(GetResources(), sb); 



public List<ScheduledResource> GetResources() 
     { 
      var res = new List<ScheduledResource>() 
       { 
        new ScheduledResource() 
         { 
          id = "1", 
          color = "blue", 
          name = "User 1" 
         }, 
        new ScheduledResource() 
         { 
          id = "2", 
          color = "black", 
          name = "User 2" 
         }, 

       }; 

      return res; 
     } 
Смежные вопросы