我正在尝试向控制器发送参数以下载文件。但是,它仅在进行硬编码时才有效,我似乎无法为它分配一个变量。
'''
<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');
},
});
});