在MVC中从action方法返回application/ms-excel内容类型的正确方法是什么?
我已经尝试创建一个控制器操作方法并传递控制器上下文,例如;
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类的代码;
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();
}
}发布于 2011-08-22 21:53:19
仅供参考。我的问题是因为我试图从AJAX回调中更改内容类型。在更改内容类型之前,请始终确保您正在提交表单。
https://stackoverflow.com/questions/7136637
复制相似问题