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é.
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
Vous devez vous connecter pour publier un commentaire.
J'espère que cela peut vous donner une idée sur comment il fait le travail
Quelques exemple de retour actionresult pour afficher
Contrôleur
Vue
JsonResult
Un exemple de retour json pour afficher
Contrôleur
appel ajax
que faire si j'ai eu un 2ème -- var p2 = GetUserOtherProducts(userGuid); par exemple? comment pourrais-je passer que pour la vue? serait-ce à l'aide de vues partielles?
Si les deux est totalement différent du modèle(doit être différent du modèle), alors vous avez besoin pour créer un
ViewModel
, vous pouvez vous référer cette stackoverflow.com/questions/16548376/... pour plus d'infocheers je vais jeter un oeil
utilisé trop -- stackoverflow.com/questions/6937156/... Merci pour votre aide! 😀
OriginalL'auteur Se0ng11