将图表绘制到ASP.NET MVC 4(Razor,C#)网站中

use*_*730 22 c# asp.net-mvc charts razor asp.net-mvc-4

是否可以通过ASP.NET MVC 4(Razor)使用C#绘制图表(曲线,直方图,圆).我正在尝试从我的数据库中提取的数据制作一些图形.但是,我找不到如何.

有什么建议吗?

非常感谢 !

Paw*_*ger 34

有一个图表助手,它可以很好地与Razor配合使用,使您可以非常轻松地构建数据的图表,直方图和其他图形表示.

或者您可以尝试使用一些jQuery/HTML5/Javascript库:

  • Highcharts是一个用纯HTML5/JavaScript编写的图表库,为您的网站或Web应用程序提供直观的交互式图表.

  • jqPlot是jQuery Javascript框架的绘图和图表插件.

  • Raphaël是一个小型JavaScript库,可以简化您在Web上使用矢量图形的工作.

其中有更多,上面只是一些例子;


Pra*_*bhe 33

如果要以图形形式显示数据,可以使用Chart helper.图表帮助程序可以呈现以各种图表类型显示数据的图像.

你可以创建一个具有图表剃刀代码的视图,如下所示(比如说它的MyChart.cshtml).

带有主题的Array条形图

@{
    var myChart = new Chart(width: 600, height: 400, theme: ChartTheme.Green)
        .AddTitle("Chart Title")
        .AddSeries(
            name: "ChartTitle",
            xValue: new[] {  "Col1", "Col2", "Col3", "Col4", "Col5" },
            yValues: new[] { "2", "6", "4", "5", "3" })
        .Write();
}
Run Code Online (Sandbox Code Playgroud)

数组的饼图

@{
    var myChart = new Chart(width: 600, height: 400, theme: ChartTheme.Green)
        .AddTitle("Chart Title")
        .AddSeries(
            name: "ChartTitle",
            chartType: "Pie",
            xValue: new[] {  "Col1", "Col2", "Col3", "Col4", "Col5" },
            yValues: new[] { "2", "6", "4", "5", "3" })
        .Write();
}
Run Code Online (Sandbox Code Playgroud)

饼图与数组主题

@{
    var myChart = new Chart(width: 600, height: 400)
        .AddTitle("Chart Title")
        .AddSeries(
            name: "ChartTitle",
            chartType: "Pie",
            xValue: new[] {  "Col1", "Col2", "Col3", "Col4", "Col5" },
            yValues: new[] { "2", "6", "4", "5", "3" })
        .Write();
}
Run Code Online (Sandbox Code Playgroud)

条形图使用数据库查询

@{
    var db = Database.Open("DBName");
    var data = db.Query("SELECT Col1, Col2 FROM Table");
    var myChart = new Chart(width: 600, height: 400)
        .AddTitle("Chart Title")
        .DataBindTable(dataSource: data, xField: "Col1")
        .Write();
}
Run Code Online (Sandbox Code Playgroud)

您可以将这些图表视图/ PartialView用作图像的src.

恩.

<html>
    <body>
         <img src="MyChart.cshtml" />
         <!-- or <img src='@Url.Action("Controler","ActionNameOfChartRenderingView")' />-->
    <body>
<html>
Run Code Online (Sandbox Code Playgroud)

图表Theams

香草 显示在白色背景的红色专栏.

蓝色 显示蓝色渐变背景上的蓝色列.

绿色 显示在绿色梯度背景的蓝色专栏.

黄色 显示在黄色梯度背景的橙色专栏.

Vanilla3D 在白色背景上显示三维红色列.

SeriesChartType枚举支持以下内容:

  1. 区域
  2. 酒吧
  3. 箱形图
  4. 气泡
  5. 甜甜圈
  6. ErrorBar
  7. 快线
  8. FastPoint
  9. 漏斗
  10. 卡吉
  11. 线
  12. 馅饼
  13. PointAndFigure
  14. 极性
  15. 金字塔
  16. 雷达
  17. 范围
  18. RangeBar
  19. RangeColumn
  20. 莲子
  21. 仿样
  22. SplineArea
  23. SplineRange
  24. StackedArea
  25. StackedArea100
  26. StackedBar
  27. StackedBar100
  28. StackedColumn
  29. StackedColumn100
  30. StepLine
  31. 股票
  32. ThreeLineBreak

这是您可以作为字符串传递给Razor页面中的Chart帮助程序的名称列表.

这是助手

namespace System.Web.Helpers
{
    public class Chart
    {
        public Chart(int width, int height, string template = null, string templatePath = null);
        public string FileName { get; }
        public int Height { get; }
        public int Width { get; }
        public Chart AddLegend(string title = null, string name = null);
        public Chart AddSeries(string name = null, string chartType = "Column", string chartArea = null, string axisLabel = null, string legend = null, int markerStep = 1, IEnumerable xValue = null, string xField = null, IEnumerable yValues = null, string yFields = null);
        public Chart AddTitle(string text = null, string name = null);
        public Chart DataBindCrossTable(IEnumerable dataSource, string groupByField, string xField, string yFields, string otherFields = null, string pointSortOrder = "Ascending");
        public Chart DataBindTable(IEnumerable dataSource, string xField = null);
        public byte[] GetBytes(string format = "jpeg");
        public static Chart GetFromCache(string key);
        public Chart Save(string path, string format = "jpeg");
        public string SaveToCache(string key = null, int minutesToCache = 20, bool slidingExpiration = true);
        public Chart SaveXml(string path);
        public Chart SetXAxis(string title = "", double min = 0, double max = 0.0 / 0.0);
        public Chart SetYAxis(string title = "", double min = 0, double max = 0.0 / 0.0);
        public WebImage ToWebImage(string format = "jpeg");
        public Chart Write(string format = "jpeg");
        public static Chart WriteFromCache(string key, string format = "jpeg");
    }
}
Run Code Online (Sandbox Code Playgroud)

希望这会帮助你.