Запись в поток ответов с помощью MVC 4

Я сохраняю документ Word на своей странице MVC (с Aspose.Words), используя поток ответов, но я получаю предупреждение javascript "200 OK" при возврате моего представления, но больше ничего не меняется.

Я делаю это правильно?

   wordDoc.Save(System.Web.HttpContext.Current.Response, "whatever", ContentDisposition.Inline, options);
   HttpContext.ApplicationInstance.CompleteRequest();
   return View();

Метод Save документирован здесь.

1 ответ

Решение

Было бы лучше реализовать свой собственный ActionResult, который будет принимать wordDoc и передать его в ответ. Это более естественный способ делать подобные вещи в MVC.

Ваш ActionResult может выглядеть так:

public class DocumentResult : ActionResult
{
  private readonly Document document;
  private readonly SaveOptions options;

  public DocumentResult(Document document, SaveOptions options)
  {
    this.document = document;
    this.options = options;
  }

  public override void ExecuteResult(ControllerContext context)
  {
    this.document.Save(System.Web.HttpContext.Current.Response, "whatever", ContentDisposition.Inline, this.options);
  }
}

Тогда вы можете использовать его в своих действиях:

return new DocumentResult(wordDoc, options);
Другие вопросы по тегам