【问题标题】:Pie Chart MVC Razor Error "OutputStream is not Available when a custom TextWriter is used."饼图 MVC Razor 错误“使用自定义 TextWriter 时,OutputStream 不可用。”
【发布时间】:2016-10-26 17:16:12
【问题描述】:

尝试在我的图表上调用 write 函数时收到 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();

当事人:

<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);
}

【问题讨论】:

  • 你只是想显示图表吗?
  • 您在哪里使用此代码?您什么时候收到错误消息?
  • 只是尝试显示此图表。我在局部视图上渲染它。当然,我想将实际数据加载到其中,但现在我在最简单的级别上工作。
  • 如何在主视图中调用局部视图?
  • 已编辑问题。

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


【解决方案1】:

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

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

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

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

【讨论】:

  • 使用@Url.Action@Html.Action有区别吗?
  • Url.Action 将 url 返回到将立即执行 Html.Action 的操作方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多