C#-MVC-JSON-使用ViewBag从服务器端到客户端返回列表

时间:2018-11-09 13:40:30

标签: javascript json asp.net-mvc entity-framework linq

大家好,

我需要使用Viewbag将列表返回到客户端并返回视图

让我们看一下代码:

  

服务器端:

var model = _iSiteService.FindProduct(id);
    var UnitsData = _iSiteService.GetAllProductsUnits(id).Where(x => x.Product.IsActive).Select(i => new
                        {
                            i.Id,
                            i.UnitId,
                            i.ConversionFactor,
                            i.ProductId
                        }).ToArray();

                        ViewBag.dataUnitsXX = Json(new
                        {
                            Data = UnitsData.ToArray()
                        }, JsonRequestBehavior.AllowGet);

    return View(model);
  

客户端:

var json = @Html.Raw(ViewBag.dataUnitsXX);
  

消息错误:

var json = System.Collections.Generic.List`1[<>f__AnonymousType2`4[System.Int32,System.Int32,System.Decimal,System.Int32]];

我如何解决。

请帮助我以javascript中的变量返回数据 谢谢你。

1 个答案:

答案 0 :(得分:2)

您可以通过将UnitsData列表添加到ViewBag中来实现:

 ViewBag.dataUnitsXX = UnitsData;

,然后在客户端使用

var jsonData = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(ViewBag.dataUnitsXX));

请注意,您尝试序列化数据的方式是多种概念的组合。您在此处使用的Json旨在返回json类型的操作结果。相反,您将返回模型,但会将操作结果添加到ViewBag。您可能会了解有关操作结果类型here的更多信息。