関連 このトピック 誰かがMicrosoft ChartingライブラリをAsp MVC 3とRazorで動作させているのでしょうか。
導入された新しいチャートヘルパーについて知っていますが、それは非常に制限されているため、実際にはオプションではありません。
画像を返すアクションメソッドを作成するのも簡単ですが、すべての対話機能が機能しないため(棒グラフの棒の単純なツールチップであっても)、このメソッドにはいくつかの制限があります。
この例 はおそらく私が見つけた最も役立つ記事ですが、アクションメソッドでのみ画像をレンダリングするときに機能するにもかかわらず、1つの簡単なグラフが機能しません。また、サンプルは.net 4で正常に動作していますが、明らかにこれらの最新のMVCサンプルです。
SO-誰かがRazorを使用してAsp MVC 3でMicrosoftチャートを完全に機能させて、完全なソリューションへのリンクを投稿できますか?
それがツールチップでありドリルダウンしている場合は、ここにサンプルがあります。自分の魅力を試してみました。インタラクティブ性を持たせるには、ImageMapを画像にリンクさせる必要があります。
MVCでインタラクティブなグラフを作成するソリューションを探すために数日を費やしましたが、これまでに見た例はすべて、実際よりもはるかに複雑でした。
Sarathからの回答はほぼ完璧ですが、イメージを2度保存するため、あまり効率的ではありません。関数Html.RenderAction()を使用すると、すべてを1つのパスで実行し、できる限り効率的にすることができます。
これが私が思いついた解決策です:
http://blog.smirne.com/2012/09/creating-interactive-charts-with-aspnet.html
すべてを1つのパスで実行できるソリューションは見たことがありません。これの最も良い部分は、web.configファイルを変更する必要がないことです。また、MVCでASP.netコントロールを使用しようとしません。純粋なMVCテクノロジーです。
[〜#〜]更新[〜#〜]
要求されたコードは次のとおりです。
コントローラ:
public ActionResult Chart()
{
var chart = buildChart();
StringBuilder result = new StringBuilder();
result.Append(getChartImage(chart));
result.Append(chart.GetHtmlImageMap("ImageMap"));
return Content(result.ToString());
}
ユーティリティ関数:
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"); }
ASP.NET MVC 2とMicrosoft Charting Controlsを使用したCodeProjectの完全なソリューションは次のとおりです。
ASP.NET MVC 3はまだRTMであり、かみそりでもあるので、それは現時点で得られるものとおそらく同じです(少なくとも、要件に適合するものを見つけることができませんでした)。ビューエンジン。とにかく、ASP.NET MVC 2から3に移行することは大したことではありません。ビューエンジンをかみそりに切り替えるのは少し手間がかかりますが、全体的な概念は同じです。
「がんばれ」と言い、具体的な問題や質問がある場合は、こちらからお尋ねください。
更新
Robert Muehsigからのこのブログ投稿は、このトピックについても取り上げており、ダウンロード可能なソリューションを提供しています。あなたのコメントに基づいて、それはあなたが実際に達成したいものにより似ています: