Проблемы с загрузкой файла из формы Ajax - PullRequest
1 голос
/ 08 февраля 2011

У меня есть страница, которая используется для отображения отчета с формой Ajax. Я хотел бы позволить пользователям выбирать, хотят ли они отчет в формате HTML, CSV или в другом загружаемом формате. Часть HTML работает нормально, но когда я пытаюсь загрузить CSV-версию, содержимое файла отображается на странице, а не предлагает пользователю загрузить.

Если я изменю форму, чтобы она больше не была Ajax-формой, загрузка файла будет работать, но тогда отображение HTML-версии будет не таким приятным. Есть ли способ сделать то, что я пытаюсь?

Мой контроллер имеет такой код:

switch (reportType)
{
  case ReportType.Csv:
    return File(reportDataAsBytes, "text/csv", "report.csv");
  default:
    return PartialView("DisplayAllOrders", reportData);
}

И это на мой взгляд

@using (Ajax.BeginForm("ViewAllOrders", "Report", new AjaxOptions { UpdateTargetId = "reportContent", InsertionMode = InsertionMode.Replace }))
{
  Format:
  <select id="ReportType" name="ReportType">
    <option value="1">HTML</option>
    <option value="2">CSV</option>
  </select>
  <input type="submit" />
}

1 Ответ

1 голос
/ 08 февраля 2011

Вы не можете использовать AJAX для загрузки файла из основного ответа HTML.

Обычный способ преодолеть это - использовать невидимый IFrame ... сказать AJAX-вызову обновить IFrame и установить src IFrame для файла, который вы хотите отправить в событии загрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...