代码之家  ›  专栏  ›  技术社区  ›  Lou Franco

在ASP.NET MVC Web控件中写入二进制数据作为响应

  •  2
  • Lou Franco  · 技术社区  · 14 年前

    我正在尝试获取一个控件(而不是控制器--的子类 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控件中执行此操作?

    1 回复  |  直到 14 年前
        1
  •  0
  •   mikefrey    14 年前

    您可以创建自定义 ActionResult . 这是一个指向博客文章的链接,用于创建自定义 ImageResult 子类的类 操作结果 http://blog.maartenballiauw.be/post/2008/05/13/ASPNET-MVC-custom-ActionResult.aspx