Какой правильный метод возвращает тип содержимого application / ms-excel из метода действия в MVC?
Я попытался создать метод действия контроллера и передать контекст контроллера, например:
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();
}
При попытке использовать контекст контроллера, как описано выше, я получаю метод или операцию, не реализованнуюисключение при вызове любого метода объекта Response.
Я также пытался вернуть типы результатов действий 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();
}
}