2013-05-31 10 views
5

{Sorry neu zu JSON} Ich muss ein Array von Ressourcen (Users) aufbauen und es an meine Ansicht weitergeben, könnte ein besserer Weg sein als was ive unten gemacht? (Demo)Mehr elegante Möglichkeit, JSON-Array zu ASP.NET MVC zurückzugeben

Mein Modell ist einfach

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

Auf meinem Controller

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

ich anonyme Typen für schnelle Projektion wie z.B. 'return Json (neu {foo =" bar "})'. [Json.NET] (http://james.newtonking.com/pages/json-net.aspx) ist ebenfalls sehr beliebt und bietet zahlreiche Möglichkeiten. –

Antwort

13

Warum Sie kehren nicht nur eine Liste von Entitäten als JSON-Ergebnis, wie:

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); 
    } 
} 

Es wird automatisch in JSON konvertiert.

+0

Ok, also habe ich das getan und model.Resources = GetResources() geändert. ToString(); aber wenn ich auf die HTML-Ausgabe schaue, bekomme ich Ressourcen: System.Web.Mvc.JsonResult –

+0

Sie besser Ihren neuen Code zeigen ... –

+2

** add ** 'return this.Json (Autos, JsonRequestBehavior.AllowGet);' sonst Sie Get [this] (http://stackoverflow.com/questions/5588143/ef-4-1-code-first-json-circular-reference-serialization-error) Fehler – stom

2

tat ich dies und das funktioniert

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; 
     } 
Verwandte Themen