将列表传递给Image src

时间:2014-09-02 10:36:53

标签: c# asp.net-mvc

我将List中的ViewBag发送给View,该 @{ List<Statistic> i = ViewBag.list ; } <img src="/Chart/CreateChart?chartType=@(System.Web.UI.DataVisualization.Charting.SeriesChartType.Column)&list=@i" alt="" /> 必须将此列表作为参数传递给函数,但我无法在我的列表中获取该列表功能

以下是代码:

{{1}}

所以,请帮帮我。

3 个答案:

答案 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;
    }