我正在尝试获取一个控件(而不是控制器--的子类
System.Web.UI.WebControls.WebControl
,这可以用于我为ASP.NET编写的在ASP.NET MVC环境中工作。正常情况下,控件会做正常的事情,这很好
有时需要通过清除响应、将图像写入响应流并更改内容类型来响应。当您这样做时,会得到一个异常:“当使用自定义文本编写器时,OutputStream不可用”。
如果我是一个页面或控制器,我会看到如何使用二进制数据创建自定义响应,但是我看不到如何从控件的呈现函数内部进行此操作。
为了简化它——假设我想要生成一个呈现到以下对象的Web控件:
<img src="pageThatControlIsOn?controlImage">
我知道如何查看传入的请求并识别应该路由到控件的查询字符串。现在,控件应该使用生成的图像(内容类型:image/png——和编码的图像)进行响应。在ASP.NET中,我们:
Response.Clear();
Response.OutputStream.Write(thePngData); // this throws in MVC
// set the content type, etc
Response.End();
我该如何在ASP.NET MVC控件中执行此操作?