Я использую MVC3 (VB) с механизмом представления Razor, и я использую помощник Chart для создания ряда диаграмм.У меня работает этот код:
В представлении:
<img src="@Url.Action("Rpt002", "Chart", New With {.type = "AgeGender"})" alt="" />
, которое запускает это действие в контроллере диаграммы:
Function Rpt002(type As String) As ActionResult
Dim chart As New System.Web.Helpers.Chart(300, 300)
'...code to fill the chart...
Return File(chart.GetBytes("png"), "image/png")
End Function
Поскольку у меня есть номердиаграмм по нескольким представлениям, я хотел поместить создание img в вспомогательную функцию.Я думал, что будет работать следующее:
<System.Runtime.CompilerServices.Extension>
Public Function ReportChart(htmlHelper As HtmlHelper, action As String, type As String) As MvcHtmlString
Dim url = htmlHelper.Action(action, "Chart", New With {.type = type})
Return New MvcHtmlString(
<img src=<%= url %> alt=""/>
)
End Function
Когда я пытаюсь это сделать, я получаю следующую ошибку:
OutputStream is not available when a custom TextWriter is used.
Я думал, что вызов "htmlHelper.Action" просто сгенерирует URLтак что я мог бы добавить его к IMG, но это фактически вызывает действие.Как получить эквивалент «Url.Action» из метода расширения?