将参数从视图发送回控制器以下载文件

时间:2019-04-12 18:25:05

标签: c# html .net asp.net-mvc razor

我正在尝试向控制器发送参数以下载文件。但是,它仅在进行硬编码时才有效,我似乎无法为它分配一个变量。

'''

 <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');
      },

    });
});

0 个答案:

没有答案