В ситуации, когда вам не нужно передавать параметры ниже пример работает отлично:ASP.NET MVC передает параметры контроллеру, который возвращает файл?
контроллер без параметров:
[Authorize]
public ActionResult GetExcelTable()
{
XlWorkBook table = new XlWorkBook();
MemoryStream stream = new MemoryStream();
table.SaveAs(stream);
return File(stream, MyLib.MIMETypes.GetFileMIMEType(".xlsx"), "Kr-ti-" + Year + "-" + Month.ToString() + "_" + DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss") + ".xlsx");
}
Клиент:
<a href="@Url.Action("GetExcelTable", "Home")">Get excel</a>
Но что, если Я хочу передать некоторые параметры контроллеру и загрузить файл? В любом случае, чтобы имитировать щелчок на теге a
из jquery и передать параметры. Я знаю, что вы не можете получить файл с вызовом jquery ajax. Параметры Month
и Year
находятся на динамических значениях клиентской стороны, которые пользователь указывает в раскрывающемся списке. Я должен прочитать эти значения перед вызовом контроллера и передать их контроллеру.
контроллер с параметрами:
[Authorize]
public ActionResult GetExcelTable(int Month, int Year)
{
XlWorkBook table = new XlWorkBook(Month, Year);
MemoryStream stream = new MemoryStream();
table.SaveAs(stream);
return File(stream, MyLib.MIMETypes.GetFileMIMEType(".xlsx"), "Kr-ti-" + Year + "-" + Month.ToString() + "_" + DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss") + ".xlsx");
}
Месяц и год являются динамическими значениями из раскрывающегося списка, который пользователь указывает им. Я должен получить выбранные значения из выпадающего списка до вызова контроллера. –
, тогда вы должны использовать js. i обновленный ответ –
Это сработало! Благодарю. –