微软图表,MVC 3和剃刀

相关主题我想知道是否有人使用Microsoft MVC 3和Razor的微软图表库。

我知道介绍新的图表助手,但由于这是非常有限的,这不是一个真正的select。

创build一个返回图像的动作方法也很简单,但是由于所有的交互性都被打破了(即使是简单的条形图中的条形工具提示),这种方法也有一些限制。

这个例子可能是我find的最有帮助的文章,但我仍然不能得到一个简单的图表工作,即使它只在一个操作方法渲染图像时工作。 另外,我已经得到了在.net 4下正常工作的样本,但显然那些不是MVC样本。

所以,有没有人得到微软图表完全在Asp MVC 3与剃刀工作,并可以链接到一个完整的解决scheme?

如果是工具提示并向下钻取,那么这里是一个示例。 我努力工作,为我的魅力。 您需要将ImageMap链接到您的图像才能具有交互性。

具有交互性的MVC图表

我花了几天的时间寻找一个能够在MVC中创build交互式图表的解决scheme,但是我所看到的所有例子都比他们要的复杂得多。

萨拉的回答几乎是完美的,但它保存了两次效率不高的图像。 使用函数Html.RenderAction(),我们可以一次完成所有的事情,并使其尽可能高效。

这是我提出的解决scheme:

http://blog.smirne.com/2012/09/creating-interactive-charts-with-aspnet.html

我还没有看到任何解决scheme可以一次完成任何事情。 最好的部分是它不需要对web.config文件进行任何修改。 它也不会尝试在MVC中使用ASP.net控件。 这是纯粹的MVC技术。

UPDATE

这是代码请求:

控制器:

public ActionResult Chart() { var chart = buildChart(); StringBuilder result = new StringBuilder(); result.Append(getChartImage(chart)); result.Append(chart.GetHtmlImageMap("ImageMap")); return Content(result.ToString()); } 

实用function:

 private Chart buildChart() { // Build Chart var chart = new Chart(); // Create chart here chart.Titles.Add(CreateTitle()); chart.Legends.Add(CreateLegend()); chart.ChartAreas.Add(CreateChartArea()); chart.Series.Add(CreateSeries()); return chart; } private string getChartImage(Chart chart) { using (var stream = new MemoryStream()) { string img = "<img src='data:image/png;base64,{0}' alt='' usemap='#ImageMap'>"; chart.SaveImage(stream, ChartImageFormat.Png); string encoded = Convert.ToBase64String(stream.ToArray()); return String.Format(img, encoded); } } 

视图:

 @{ Html.RenderAction("Chart"); } 

这将是一个完整的解决schemeCodeProject使用ASP.NET MVC 2和微软图表控制:

  • ASP.NET MVC图表控件

这可能与目前的情况一样好(至less我找不到更适合你需求的东西),因为ASP.NET MVC 3仍然只是RTM,razor视图引擎也是如此。 无论如何,将它从ASP.NET MVC 2迁移到3并不是什么大事。 将视图引擎切换到剃刀将是一个更努力,但整体概念保持不变。

我会说“去做”,当你面对一个具体的问题或有一个问题时,在这里问一下。

更新

Robert Muehsig的这篇博客也涵盖了这个话题,并且有一个可下载的解决scheme。 根据你的评论,它看起来更像你实际上想要完成的事情:

  • 如何:在ASP.NET MVC中使用新的ASP.NET图表控件