首页 > 解决方案 > 在 MVC 中创建图表返回 System.NotSupportedException

问题描述

我正在考虑将图表带入我的 mvc 应用程序。我有这个MSDN 链接。我不喜欢关于使用数据库查询的部分中使用的方法,因为它也涉及在视图中拥有一个数据库文件和查询。起初,我尝试在 ActionResult 中收集数据,将图表对象保存在我的模型中,然后在我的视图中调用.Write()图表上的方法。然而,当我调用它时,.Write()我得到了System.NotSupportedException: Specified method is not supported.Write()本身。

动作结果

DataSet data = //getdata
ChartModel chartModel = new ChartModel();
chartModel.MyChart = new Chart(width: 600, height: 400)
    .AddTitle("Status Count")
    .AddSeries("Default",
                xValue: data.Tables[0].AsEnumerable(), xField: "count",
                yValues: data.Tables[0].AsEnumerable(), yFields: "status_desc");
return View(chartModel);

模型

public class ChartModel
{
    public Chart MyChart { get; set; }
}

看法

@Model.MyChart.Write();

然后我尝试使用 Array 示例并直接复制它并且它有效,所以我认为它不喜欢我.Write()在视图中拥有它自己。所以我把我的代码改成这样。

动作结果

ChartModel chartModel = new ChartModel();
chartModel.ChartData = //getdata 
return View(chartModel);

模型

public class ChartModel
{
    public DataSet ChartData{ get; set; }
}

看法

@{var myChart = new Chart(width: 600, height: 400)
    .AddTitle("Status Count")
    .AddSeries("Default",
                xValue: Model.ChartData.Tables[0].AsEnumerable(), xField: "count",
                yValues: Model.ChartData.Tables[0].AsEnumerable(), yFields: "status_desc");
 }

然而,这得到了相同的System.NotSupportedException: Specified method is not supported结果,但它现在已经上var myChart = new Chart(width: 600, height: 400)线了。

目前我的代码看起来像这样,因为一旦我让图表工作,我将添加其他类型的图表但重用相同的代码。

动作结果

ChartModel chartModel = new ChartModel();
chartModel.ChartData = //getdata
chartModel.ChartTitle = "Status Count";
chartModel.XSeries = "count";
chartModel.YSeries = "status_desc";

return View(chartModel);

模型

public DataSet ChartData { get; set; }
public string ChartTitle { get; set; }
public string XSeries { get; set; }
public string YSeries { get; set; }

看法

@{
    var myChart = new Chart(width: 600, height: 400)
        .AddTitle(Model.ChartTitle)
        .AddSeries(
            name: "Status",
            xValue: Model.ChartData.Tables[0].AsEnumerable(), xField: Model.XSeries,
            yValues: Model.ChartData.Tables[0].AsEnumerable(), yFields: Model.YSeries)
        .Write();
}

这是当前错误的屏幕截图错误

标签: c#asp.net-mvccharts

解决方案


你试过这个:

var myChart = new Chart(width: 600, height: 400)
        .AddTitle(Model.ChartTitle)
        .DataBindTable(dataSource: chartModel.ChartData, xField: Model.XSeries)
        .Write();

推荐阅读