Отправка параметра обратно в контроллер из представления для загрузки файла - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь отправить параметр на контроллер для загрузки файла.Однако это работает только в жестком коде, я, кажется, не могу назначить его с переменной.

'' '

 <a href="@Url.Action("GetFiles", "Home", new { EventID = 57 })">Download Form</a>

Есть ли способ для меня установить значение EventID взначение формы или значение Viewbag.На данный момент единственное значение, которое я могу установить, это целое число, например.57. Это изменится в зависимости от того, в каком событии я нахожусь, в какой момент я могу установить это значение в javascript.

Контроллер

public ActionResult GetFiles(int eventId)
{
    //ViewData["eventID"] = eventId;

    using (MyDatabaseEntities1 dc = new MyDatabaseEntities1())
    {
        var sc = dc.ScanReports.FirstOrDefault(x => x.EventID == eventId);
        var path = Path.Combine(Server.MapPath("~/App_Data/reports/"), sc.FileName + sc.FileExtension);
        byte[] fileBytes = System.IO.File.ReadAllBytes(path);
        return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, sc.FileName);
    }
}

Обновлено - ДобавленоeventID в форму

  <form id="download" action="@Url.Action("GetFiles", "Home")" method="GET">
        <input type="hidden" name="EventID" id="reportEventID" /><br />
        <button>Download Report</button>
  </form>

Ajax Call
``` 
```
$('#download').submit(function (e) {
  $.ajax({
      url: this.action,
      type: this.method,
      data: new FormData(this),
      cache: false,
      contentType: false,
      processData: false,
      success: function () {
      $('#myModalReport').modal('hide');
      },

    });
});
...