【问题标题】:C# - MVC - JSON - Return List From Server Side to Client Side Using ViewBagC# - MVC - JSON - 使用 ViewBag 从服务器端返回列表到客户端
【发布时间】:2018-11-09 13:40:29
【问题描述】:

大家好,

我需要使用 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 中返回变量中的数据 谢谢你。

【问题讨论】:

  • 传递一个不是匿名类型的对象

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


【解决方案1】:

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

 ViewBag.dataUnitsXX = UnitsData;

然后客户端使用:

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

请注意,您尝试序列化数据的方式是各种概念的混合。您在那里使用的 Json 旨在返回 json 类型的操作结果。相反,您正在返回模型,但将操作结果添加到 ViewBag。您可以阅读有关操作结果类型的更多信息here

【讨论】:

  • 谢谢,但是为什么 >> Newtonsoft.Json.JsonConvert.SerializeObject ?!
  • @DinaDiagovic, var jsonData = @Html.Raw(Json.Encode(ViewBag.dataUnitsXX)) 也可以,但 MS 现在建议使用 Json.NET 而不是 JavaScriptSerializer
猜你喜欢
  • 1970-01-01
  • 2012-06-22
  • 2012-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多