将列表传递给图像源
本文关键字:图像 列表 | 更新日期: 2023-09-27 18:20:30
我将ViewBag
中的List
发送到必须将此列表作为参数传递给函数的View
,但我无法在我的函数中获取该列表。
代码如下:
@{
List<Statistic> i = ViewBag.list ;
}
<img src="/Chart/CreateChart?chartType=@(System.Web.UI.DataVisualization.Charting.SeriesChartType.Column)&list=@i" alt="" />
所以,请帮助我。
你必须把它转换为该类型:
@{
var i = ViewBag.list as List<Statistic>;
}
或:
@{
var i = (List<Statistic>)ViewBag.list;
}
要将值分配给Image src
请执行以下操作。
您的值分配不适合映像源。
<img src="/Chart/CreateChart?chartType=" + @(System.Web.UI.DataVisualization.Charting.SeriesChartType.Column) + "&list=" + @i alt="" />
我们不能立即将类分配给img src
。它永远不会在 HTML 中编译。您还有其他Js/Cs
库汇编吗?
我在将
列表放入 src 之前通过对列表进行序列化解决了这个问题,然后在我将其取回函数中时对其进行反序列化,如下所示:
在我的控制器中,我首先序列化我的列表
string jsonString = JsonHelper.JsonSerializer<IList<Statistic>>(list);
ViewBag.list =jsonString;
在我的操作中创建图表中,我反序列化我的列表:
IList<Statistic> lists = JsonHelper.JsonDeserialize<IList<Statistic>>(list);
这是 JsonHelper 类:
public class JsonHelper
{
/// <summary>
/// JSON Serialization
/// </summary>
public static string JsonSerializer<T>(T t)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
MemoryStream ms = new MemoryStream();
ser.WriteObject(ms, t);
string jsonString = Encoding.UTF8.GetString(ms.ToArray());
ms.Close();
return jsonString;
}
/// <summary>
/// JSON Deserialization
/// </summary>
public static T JsonDeserialize<T>(string jsonString)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
T obj = (T)ser.ReadObject(ms);
return obj;
}