从控制器返回图像内容以查看MVC3

时间:2014-02-17 05:59:45

标签: c# asp.net-mvc asp.net-mvc-3 razor

我想要一个控制器来提供图表控件并直接在View中使用它。我做的是在Razor我用过

<p>
    <img src="/Exam/ChartReport" />
</p>

在Controller中我创建了一个像

这样的动作方法
public ActionResult ChartReport()
{
    var data = new System.Collections.ArrayList
               {
                   new { X = DateTime.Now.AddMonths(-2), Y = 200 },
                   new { X = DateTime.Now.AddMonths(-1), Y = 300 },
                   new { X = DateTime.Now, Y = 500 }
               };
    new System.Web.Helpers.Chart(400, 200, System.Web.Helpers.ChartTheme.Blue)
        .AddTitle("Price enquiries")
        .DataBindTable(data, "X")
        .Write("png");
    return null;
}

现在我想要的是将模型从View传递给Controller动作作为参数,这样我就可以创建图表而无需进行任何Db查询。我怎样才能做到这一点 。我的视图是基于模型

创建的
@model MyApp.ViewModels.SampleModel
<p>
   <img src="/Exam/ChartReport" />
</p>

我试着做

<p>
    < img src="/Exam/ChartReport/@Model" />
</p> 

并在控制器中

public ActionResult ChartReport(SampleModel model) //But model is null
{
}

1 个答案:

答案 0 :(得分:1)

您可以将参数传递给控制器​​操作,如下所示:

<img ... src="/Exam/ChartReport?parameter1=value1&parameter2=value2" />

您的行动应如下:

public class ExamController : Controller
{
    public ActionResult ChartReport(string parameter1, string parameter2)
    {
         ...
         // Return the contents of the Stream to the client
         return File(imgStream, "image/png");
    }
}