饼图MVC Razor错误“使用自定义TextWriter时,OutputStream不可用。”

时间:2016-10-26 17:16:12

标签: asp.net-mvc asp.net-mvc-4 razor

尝试在我的图表上调用写入功能时收到OutputStream is not available when a custom TextWriter is used.错误。

部分:

@{
var pieChart = new Chart(width: 500, height: 350, theme: ChartTheme.Green)
            .AddTitle("Reject Message Report")
            .AddSeries(
                name: "Rejects",
                chartType: "Pie",
                xValue: new[] { "Col1", "Col2", "Col3" },
                yValues: new[] { "2", "3", "4" });
}

@pieChart.Write();

Partent:

<div class="container body-content">
    @Html.Action("RejectMessageReport", "ALS")
</div>

控制器:

public ActionResult RejectMessageReport(int business = 1, int cra = 0)
{
        RejectMessageReportViewModel model = new RejectMessageReportViewModel();
        return PartialView("_RejectMessageReport", model);
}

1 个答案:

答案 0 :(得分:2)

Chart.Write方法写入输出流。您当前的代码在父操作方法的视图中调用操作方法。 Razor正在尝试为您的主视图执行代码,并且您的子操作方法视图代码结束它将返回输出。

您应该使用图像元素并将其源设置为呈现图形的操作方法的网址

<div class="container body-content">
    <img src="@Url.Action("RejectMessageReport", "ALS")" />
</div>

这样,当razor执行主视图的代码时,它会生成图像标记的标记,并将src设置为RejectMessageReport操作方法的网址(@Url.Action方法返回此网址) 。您的浏览器将单独调用以加载img标记的图像源。在写入图像后,无需担心输出流是否可用(针对该调用)。