[英]Passing a list of object from a view to the controller in asp.net mvc?
[英]ASP.NET MVC passing JSON to View from controller
想知道最好的方法是从API(JSON格式)中提取数据。 我的控制器中有代码,该代码调用返回数据的API。
我想将数据保存到我的视图中,以便可以在页面上显示它。 我通过使用jQuery / AJAX看到了最有据可查的方式,但是我真的不希望API网址公开。
我正在考虑传递从返回的数据创建的对象。 但老实说,我不确定如何做到这一点!
以下代码带回每个用户的产品数据。 这很好。
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;
}
目前,我正在使用ViewBag将返回的数据传递到页面。 如果产品不止一种,这将无法正常工作。 我将其传递给视图的ActionResult中。
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;
}
任何想法/例子将不胜感激。
希望这可以让您对它的实际工作方式有所了解
返回作为操作结果查看的一些示例
控制者
public ActionResult something(string userGuid)
{
var p = GetUserProducts(userGuid);
return view(p); //you can return as partial view (return PartialView("your partial view name", p));
}
视图
@model IEnumerable<productDetails>
foreach (var item in Model)
{
@Html.DisplayFor(model => item.Id)
//and so on
}
JsonResult
返回为json以查看的一些示例
控制者
[httpPost]
public JsonResult something(string userGuid)
{
var p = GetUserProducts(userGuid);
return Json(p, JsonRequestBehavior.AllowGet);
}
用ajax调用
$.post( "../something", {userGuid: "foo"}, function( data ) {
console.log(data)
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.