2011-08-09 24 views
1

と仮定私のようなコントローラ内のアクションがあります:私は移動はASP.net MVCで別のActionResultからのFileStreamをレンダリング

public ActionResult MakePDF() 
{ 
    byte [] image = ReadStream("Chart/RenderChart?chartType=LineChart"); 
    ... 
} 
+0

なぜ、MakePDFアクションでも 'imgStream'を得るためにRenderChartアクションで行っているのと同じロジックをやってみませんか? – amurra

+1

私はchartControllerをより汎用性のあるものにしたいと考えており、他のクラスでも使用できます。 – Seen

答えて

0

などのさまざまなアクションから、このアクションをレンダリングすることができますどのように

public class ChartController 
{ 
    public ActionResult RenderChart(string chartType) 
    {  
     ... 
     return File(imgStream, "image/png"); 
    } 
} 

を与えられたchartTypeimgStreamを、両方のアクションが呼び出せる共通のサービスにするロジック。アクションは同じコントローラである場合

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; 
} 
+0

私はそれが良い方法だと思います。ありがとう。私は、サービスではなくコントローラに基づいたソリューションがあるのだろうかと思います。 – Seen

関連する問題