0

我正在尝试将查询结果转换为 json。

    string esql = "select d.dpr_ts, d.dpr_close from Entities3.dpr_mm as d";//where dpr_qot_id=2029543939 and dpr_ts>='" + start + "' and  dpr_ts<='" + end + "'";
    EntityConnection econn = new EntityConnection("name=Entities3");

    econn.Open();

    EntityCommand ecmd = econn.CreateCommand();
    ecmd.CommandText = esql;
    EntityDataReader ereader = ecmd.ExecuteReader(CommandBehavior.SequentialAccess);
    Console.WriteLine("Entity SQL Result");
    StringBuilder result = new StringBuilder();
    int i = 0;
    while (ereader.Read())
    {
        if (i > 0) result.Append(","); i++;
        result.Append("['" + ereader.GetDateTime(0).ToShortDateString() + "'," + ereader.GetValue(1) + "]");
    }
    ViewBag.ChartData = "[" + result.ToString() + "]";

我想把它保存在 ViewBag 中。但结果字符串看起来像:([&#39;10.01.2011&#39;,3,9990],[&#39;11.01.2011&#39;]所以"'" 被转换为&#39;)。我怎样才能避免它?

顺便说一句:我通常可以更好地完成这项任务吗?

4

1 回答 1

3
  1. 将结果从 sql 转换为对象,即使是动态对象也可以。
  2. 将对象放入ViewBag
  3. 在视图中将对象呈现为 JSON 使用Json.Net

这是一个例子

控制器

var data = GetDataFromDatabaseAndMapToObject();
ViewBag.TheData = data;

return View(model);

看法

<script type="text/javascript">
    var json = @Html.Raw(JsonConvert.Serilaized(ViewBag.TheData));
    //use json however you would like.
</script>
于 2012-11-29T17:37:20.957 回答