新しいasp.netのチャートコントロール - MVCで(最終的に)動作するのでしょうか?
質問
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
100万ドルの疑問は......これらはMVCで動くのか、動くとしたらいつなのか、ということです。
どのように解決するのですか?
チャートコントロールは、2つの方法で使用することができます。
コントローラから画像を生成する
アクションからチャートを生成して画像として返すことで、(チャットマンが言っているように)。
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");
}
WebFormsのスタイル
この方法では、.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クラスのメソッドが必要になります。これは私にとってはOKです。この方法で作業すると、チャートコントロールの http ハンドラによって生成された画像への URL をコントロールがレンダリングするようになります。デプロイメントでは、画像をキャッシュするために書き込み可能なフォルダを提供する必要があります。
* VS 2010 / .NET 4 サポート *。
これを .NET 4 で動作させるには、適切な公開鍵トークンを使用して、チャートの参照をバージョン 4.0.0.0 に変更する必要があります。
また、チャート コントロールは、リクエスト ルートではなく、現在のリクエスト パスに URL を生成するようになったようです。私の場合、これは、すべてのチャート リクエストが 404 エラーになることを意味し、その理由は
/{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}");
...
関連
-
[解決済み】WCFとは何か、何ができるのか?
-
[解決済み] VS2017/2015 で .xproj ファイルを開く方法
-
[解決済み] NetFx45WebLinkとNetFx45RedistLinkの違いは何ですか?
-
[解決済み] .Netの配列のLongLengthの目的は何ですか?
-
[解決済み] 到達不能なホストに対してソケット操作を行おうとした
-
[解決済み] 権限 '*' を持つ SSL/TLS の安全なチャネルを確立できませんでした。
-
[解決済み] RelativeSourceでWPFバインディングを使用するにはどうしたらいいですか?
-
[解決済み] ELMAHをASP.NET MVCの[HandleError]属性で動作させる方法は?
-
[解決済み] WCF - メッセージサイズのクォータを増加させる方法
-
[解決済み】Visual Studioでaspx/ascxファイルの.designerファイルを強制的に再生成する方法とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】コンパイラーエラーメッセージ。コンパイラはエラーコード -532462766 で失敗しました。
-
[解決済み] CLSID {XXXX} を持つコンポーネントの COM クラスファクトリの取得は、次のエラーにより失敗しました: 80040154。
-
[解決済み] VB.NETでプログラムパスを取得する?
-
[解決済み] BasicHttpsBindingとWsHttpBinding with Transport securityの違いは何ですか?
-
[解決済み] NetFx45WebLinkとNetFx45RedistLinkの違いは何ですか?
-
[解決済み] gacutil.exeはどこですか?
-
[解決済み] 1は有効なWin32アプリケーションではありません "を解決するには?
-
[解決済み] 文字列から数字を抽出する正規表現
-
[解決済み] AssemblyVersion、AssemblyFileVersion、AssemblyInformationalVersionの違いは何ですか?
-
[解決済み] RelativeSourceでWPFバインディングを使用するにはどうしたらいいですか?