0

ASP MVC 4.0(VS 2012RCでは.net4.5)を使用して、System.Web.UI.Datavisualization.Chartコントロールをページにレンダリングしようとしています。MVCページビューでWebフォームコントロールを直接使用するのは簡単/標準的な方法ではないことに気付いたので、コントローラーのアクションを使用して、ビューに表示できるグラフの画像を返そうとしています。

HomeControllerには次のものがあります。

public FileResult DataChart()
{
        Chart newChart = new Chart()
        {
            Width = 500,
            Height = 300
        };
        List<double> DataPoints = new List<double>();
        new LogModelContainer().Measurements.Select(i => i.MU).ToList().ForEach(i => DataPoints.Add(i));
        Series newSeries = new Series()
        {
            ChartType = SeriesChartType.Bar
        };
        newSeries.Points.Add(DataPoints.ToArray());
        newChart.Series.Add(newSeries);
        newChart.ChartAreas.Add(new ChartArea());
        var returnVal = new MemoryStream();
        newChart.SaveImage(returnVal);
        return File(returnVal.GetBuffer(), @"image/png");
 }

注:グラフのデータは、SQLデータベースにリンクされたEF 5モデルからのものです(データは実際に存在し、正しく読み込まれます)。

Index.cshtmlから次のように使用しようとしています。

          <img src="/HomeController/DataChart" alt="" />  

これは、CodePlexの例で使用されているものと同等のようです(MVCチャートコントロールの例CodePlexは、パラメーターをアクションに渡す必要がないことを除けば、Webで見つけました。

コードを実行すると、このグラフがあるはずのページの壊れた画像アイコンだけが表示されます。私は完全なASP初心者です(これはこのテクノロジーを使用した最初のプロジェクトです)ので、愚かなことをしている可能性は十分にあります。誰かが私に何が悪いのか教えてもらえますか?ありがとう

4

1 に答える 1

1

imgsrcは/HomeControllerではなく/Homeになりませんか?(それらが同等であるかどうかはわかりませんが、私は常に「コントローラー」という単語を追加せずにコントローラー名だけを使用していました)。そうは言っても、Chrome / FFの開発者ツールを使用してフロントエンドを見て、画像ソースが実際にどのようにレンダリングされているかを確認してください。

于 2012-08-23T21:19:20.310 に答える