Vic*_*tor 35 c# asp.net-mvc charts mschart asp.net-mvc-3
与此主题相关我想知道是否有人使Microsoft Charting库与Asp MVC 3和Razor一起使用.
我知道引入的新图表助手,但由于这是非常有限的,这不是一个真正的选择.
要创建一个返回图像的动作方法也很容易,但由于所有交互性都会中断(即使只是条形图中条形图的简单工具提示),此方法也有一些限制.
这个例子可能是我发现的最有用的文章,但是我仍然无法使用一个简单的图表,即使它只在动作方法中渲染图像时也能正常工作.此外,我在.net 4下的样本工作正常,但显然那些不是MVC样本.
SO - 有没有人让微软的图表在Razor的Asp MVC 3中完全运行,并且可以发布一个完整解决方案的链接?
smi*_*rne 12
我花了几天时间寻找一种在MVC中创建交互式图表的解决方案,但我看到的所有示例都比以前更加复杂.
Sarath的答案几乎是完美的,但它将图像保存两次,效率不高.使用函数Html.RenderAction(),我们可以在一次通过中完成所有操作,并使其尽可能高效.
这是我提出的解决方案:
http://blog.smirne.com/2012/09/creating-interactive-charts-with-aspnet.html
我没有看到任何解决方案可以一次完成所有事情.最好的部分是它不需要对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());
}
Run Code Online (Sandbox Code Playgroud)
效用函数:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
视图:
@{ Html.RenderAction("Chart"); }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
25226 次 |
最近记录: |