ASP.NET MVC en passant JSON pour Afficher à partir du contrôleur.

Me demandais quelle est la meilleure façon est d'extraire des données à partir d'une API (au format JSON). J'ai le code dans mon contrôleur, qui appelle une API qui renvoie des données.

Je veux récupérer les données sur mon point de Vue afin que je puisse l'afficher sur une page. J'ai vu les plus documentés par l'utilisation de jQuery/AJAX, mais je n'ai pas vraiment envie de l'API url à être rendu public.

Je pensais de passage d'un objet créé à partir des données retournées. Mais en toute honnêteté, je ne suis pas sûr de savoir comment le faire!

Le code ci-dessous rapporte les données pour les produits, par utilisateur. Cela fonctionne très bien.

public static List<productDetails> GetUserProducts(string userid)
{
    //api/product/user/<Guid>
    var url = baseUrl + "/product/user/" + userid;

    var syncClient = new WebClient();
    var content = syncClient.DownloadString(url);

    List<productDetails> Products = (List<productDetails>)Newtonsoft.Json.JsonConvert.DeserializeObject(content, typeof(List<productDetails>));

    return Products;
}

Et à présent je suis de passage les données renvoyées à la page à l'aide de ViewBag. Cela ne fonctionne pas bien si il n'y a plus d'un produit. Je suis de passage ce dans le ActionResult pour la vue.

var p = GetUserProducts(userGuid);

foreach(var product in p)
{
    ViewBag.pId = product.Id;
    ViewBag.pName = product.FriendlyName;
    ViewBag.pSerial = product.SerialNumber;
    ViewBag.pbatt = product.Location.BatteryCharge + "%";

    ViewBag.devicehistory = "~/Location/History/" + product.Id;
}

Toutes les idées/exemples serait très apprécié.

Pourquoi ne pas simplement utiliser Model au lieu de ViewBag?
J'ai un modèle mis en place, je suis assez nouveau pour MVC tbh. avez-vous un exemple?

OriginalL'auteur thatuxguy | 2014-05-12