首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回excel应用程序内容的ActionMethod

返回excel应用程序内容的ActionMethod
EN

Stack Overflow用户
提问于 2011-08-21 13:42:11
回答 1查看 2.6K关注 0票数 1

在MVC中从action方法返回application/ms-excel内容类型的正确方法是什么?

我已经尝试创建一个控制器操作方法并传递控制器上下文,例如;

代码语言:javascript
复制
public void ExportToExcel(MyViewModel model, ControllerContext context)
{
    .... build up html or xml excel output in Writer

    context.HttpContext.Response.Clear();
    context.HttpContext.Response.ContentType = "applicaton/vnd.ms-excel";
    context.HttpContext.Response.AddHeader(.. etc.);
    context.HttpContext.Response.Write(Writer.ToString());
    context.HttpContext.Response.End();
}

当尝试使用如上所述的控制器上下文时,当调用响应对象的任何方法时,我得到一个方法或操作未实现异常。

我还尝试过返回FileResult、FileContentResult和ContentResult操作结果类型,它们似乎只是将我的内容抛给浏览器。

编辑:这是我的ExcelResult类的代码;

代码语言:javascript
复制
public class ExcelResult : ActionResult
{
    private string _content = String.Empty;
    public string Content
    {
        get {

            return _content;
        }

        set {

            _content = value;
        }
    }



    public ExcelResult(string content)
    {
        this.Content = content;
    }



    public override void ExecuteResult(ControllerContext context)
    {
        context.HttpContext.Response.Clear();
        context.HttpContext.Response.ContentType = "application/vnd.ms-excel";
        context.HttpContext.Response.Charset = "iso-8859-1";
        context.HttpContext.Response.BufferOutput = true;
        context.HttpContext.Response.AddHeader("content-disposition", "attachment; filename = exportdata.xls");
        context.HttpContext.Response.Write(this.Content);
        context.HttpContext.Response.End();
    }


}
EN

回答 1

Stack Overflow用户

发布于 2011-08-22 21:53:19

仅供参考。我的问题是因为我试图从AJAX回调中更改内容类型。在更改内容类型之前,请始终确保您正在提交表单。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7136637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档