Scott Gu が、.NET チームによって配布されている新しいチャート コントロール セットについて投稿しました。すばらしいですね。http://weblogs.asp.net/scottgu/archive/2008/11/24/new-asp-net-charting-control-lt-asp-chart-runat-quot-server-quot-gt.aspx
最も重要な質問は、彼らは MVC で作業するのか、もしそうなら、いつ作業するのかということです。
ベストアンサー1
チャート コントロールは次の 2 つの方法で使用できます。
コントローラーからイメージを生成する
チャートを生成し、それをアクションから画像として返すことによって(Chatuman が言及しているように)、
Chart chart = new Chart();
chart.BackColor = Color.Transparent;
chart.Width = Unit.Pixel(250);
chart.Height = Unit.Pixel(100);
Series series1 = new Series("Series1");
series1.ChartArea = "ca1";
series1.ChartType = SeriesChartType.Pie;
series1.Font = new Font("Verdana", 8.25f, FontStyle.Regular);
series1.Points.Add(new DataPoint {
AxisLabel = "Value1", YValues = new double[] { value1 } });
series1.Points.Add(new DataPoint {
AxisLabel = "Value2", YValues = new double[] { value2 } });
chart.Series.Add(series1);
ChartArea ca1 = new ChartArea("ca1");
ca1.BackColor = Color.Transparent;
chart.ChartAreas.Add(ca1);
using (var ms = new MemoryStream())
{
chart.SaveImage(ms, ChartImageFormat.Png);
ms.Seek(0, SeekOrigin.Begin);
return File(ms.ToArray(), "image/png", "mychart.png");
}
Webフォームスタイル
この方法では、.aspx ビューにチャートを含めるだけです (従来の Web フォームと同様)。このためには、web.config で関連する部分を接続する必要があります。
<controls>
...
<add tagPrefix="asp"
namespace="System.Web.UI.DataVisualization.Charting"
assembly="System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</controls>
<httpHandlers>
...
<add path="ChartImg.axd"
verb="GET,HEAD"
validate="false"
type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</httpHandlers>
<handlers>
...
<add name="ChartImageHandler"
preCondition="integratedMode"
verb="GET,HEAD"
path="ChartImg.axd"
type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</handlers>
チャートを作成するときに DataPoint 要素内でコードを実行することはできないため、データをフックするには View クラスのメソッドが必要になります。これは私の場合は問題なく動作します。この方法では、コントロールはチャート コントロールの http ハンドラーによって生成された画像への URL をレンダリングします。展開では、画像をキャッシュするための書き込み可能なフォルダーを提供する必要があります。
* VS 2010 / .NET 4 サポート *
これを .NET 4 で動作させるには、適切な公開キー トークンを使用してチャートの参照をバージョン 4.0.0.0 に変更する必要があります。
また、チャート コントロールは、リクエスト ルートではなく、現在のリクエスト パスへの URL を生成するようになったようです。私の場合、これは、/{Controller}/ChartImg.axd
ルートによって同等のものがブロックされたため、すべてのチャート リクエストが 404 エラーになったことを意味していました。これを修正するために、私の使用法をカバーする追加の IgnoreRoute 呼び出しを追加しました。より一般的な解決策の方が良いでしょう。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("ChartImg.axd/{*pathInfo}");
routes.IgnoreRoute("{controller}/ChartImg.axd/{*pathInfo}");
routes.IgnoreRoute("{controller}/{action}/ChartImg.axd/{*pathInfo}");
...