我将List
中的ViewBag
发送给View
,该 @{
List<Statistic> i = ViewBag.list ;
}
<img src="/Chart/CreateChart?chartType=@(System.Web.UI.DataVisualization.Charting.SeriesChartType.Column)&list=@i" alt="" />
必须将此列表作为参数传递给函数,但我无法在我的列表中获取该列表功能
以下是代码:
{{1}}
所以,请帮帮我。
答案 0 :(得分:0)
您必须将其转换为该类型:
@{
var i = ViewBag.list as List<Statistic>;
}
或:
@{
var i = (List<Statistic>)ViewBag.list;
}
答案 1 :(得分:0)
将值分配给Image src
如下所示。
您的值分配不适合Image src。
<img src="/Chart/CreateChart?chartType=" + @(System.Web.UI.DataVisualization.Charting.SeriesChartType.Column) + "&list=" + @i alt="" />
我们无法立即为img src
分配课程。它永远不会在Html中编译。你最后还有其他Js/Cs
图书馆编辑吗?
答案 2 :(得分:0)
我通过在将其放入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;
}