と仮定私のようなコントローラ内のアクションがあります:私は移動はASP.net MVCで別のActionResultからのFileStreamをレンダリング
public ActionResult MakePDF()
{
byte [] image = ReadStream("Chart/RenderChart?chartType=LineChart");
...
}
と仮定私のようなコントローラ内のアクションがあります:私は移動はASP.net MVCで別のActionResultからのFileStreamをレンダリング
public ActionResult MakePDF()
{
byte [] image = ReadStream("Chart/RenderChart?chartType=LineChart");
...
}
などのさまざまなアクションから、このアクションをレンダリングすることができますどのように
public class ChartController
{
public ActionResult RenderChart(string chartType)
{
...
return File(imgStream, "image/png");
}
}
を与えられたchartType
のimgStream
を、両方のアクションが呼び出せる共通のサービスにするロジック。アクションは同じコントローラである場合
public class ChartService
{
public Stream GetChartImageStream(string chartType)
{
Stream imgStream;
//assign a value to imgStream
return imgStream;
}
}
は、あなたが直接RenderChart
メソッドを呼び出すことでごまかすことができます。ロジックを共通のサービス方法に移行することをお勧めします。
public ActionResult MakePDF()
{
FileStreamResult renderChartResult = (FileStreamResult)RenderChart("LineChart");
Stream imgStream = renderChartResult.FileStream;
}
私はそれが良い方法だと思います。ありがとう。私は、サービスではなくコントローラに基づいたソリューションがあるのだろうかと思います。 – Seen
なぜ、MakePDFアクションでも 'imgStream'を得るためにRenderChartアクションで行っているのと同じロジックをやってみませんか? – amurra
私はchartControllerをより汎用性のあるものにしたいと考えており、他のクラスでも使用できます。 – Seen