MVC Ajax图表控制器

本文关键字:控制器 Ajax MVC | 更新日期: 2023-09-27 18:08:41

嗯,我正在创建一个"统计"网站。已经有一个模板,少量数据和结构。

我喜欢谷歌图表API,特别是图表的外观,所以我创建了一个HtmlHelper作为它的扩展。你可以这样设置:

@Html.GoogleChart("Types", 300, 300, GChartType.Pie, (List<KeyValuePair<string, int>>)ViewBag.MyData)

它有几个重载和支持多种图表类型和单/多维数据。它返回图表图像的完整html代码。

我将在几周内将helper作为开源发布,我只是在修复一些最终的错误。

正如您所看到的,我通过ViewBag将KeyValuePair的列表传递给视图,因此可以使用该数据生成图表。

这工作OK,但我面对多个控制器使用相同的数据来生成图表,我想编码DRY。你们这些绝地大师能帮帮这位年轻的学徒吗?

我想我有两个问题:

  • 如何在视图中不重复图表;
  • 如何不从多个控制器的数据库中检索统计/过滤数据;

面对这两个问题,如何解决?

  • 在已经设置图表帮助器的情况下创建部分视图?
  • 创建一个具有每个特定图表动作的ChartController ?
  • 创建一个控制器来检索和组织数据?
  • 制作一个简单的类来获取数据并将有组织的数据返回给多个控制器?
  • 制作一个类只返回图表的url,而不是使用Helper?
  • 图表控制器和数据控制器?
  • 让Ajax调用这些家伙?

有人能帮我理解的可能性,也许显示一个路径?

我感谢你在这里度过的时间!

MVC Ajax图表控制器

如何在视图中不重复图表

我不确定你的意思,但是如果重复的代码量是可管理的(小-像一行代码),那么重复可能不是什么大问题。如果不重复比重复需要付出更多的努力,那么它确实值得担心。

如何不从数据库中检索统计/过滤的数据多个控制器

你的意思是如何避免多次获得相同的数据吗?如果是这样,您需要将数据拉入中介,并让您的特定图表请求击中该中介。它将节省多次访问原始数据源的时间——但是需要做很多工作来获得这个设置,所以您必须做一些分析来看看它是否值得(优点和缺点,等等)。