我试图创建一个下载文件的动作链接。我在视图中得到noticiaId和filename的值,但在控制器中没有。有一些错误的actionlink HTML助手,我失踪。如果我这样做:
@Html.ActionLink("Download", "DownloadAnexo", "NoticiasController", new { noticiaid = Model.ID, filename = f.File }, null)
我得到HTTP 404与这个URL: localhost:port/NoticiasController/DownloadAnexo?noticiaid=55&filename=file.png这看起来对我来说是正确的,但我仍然得到404错误,说没有找到路由。
部分观点:
@model Web.Models.Noticias.NoticiaVM
<div class="col">
<label>Anexos:</label>
<table>
@if (Model.Anexos != null)
{
foreach (var f in Model.Anexos)
{
<tr>
<td>@f.File</td>
<td>
@Html.ActionLink("Download", "DownloadAnexo", "NoticiasController", new { noticiaid = Model.ID, filename = f.File }, null)
</td>
</tr>
}
}
</table>
</div>
控制器动作:
public ActionResult DownloadAnexo(int? noticiaid, string filename)
{
if(noticiaid != null && !String.IsNullOrEmpty(filename))
{
string fullPath = ConfigurationManager.AppSettings["NoticiasFiles"] + "/N_" + noticiaid + "/Anexos/";
byte[] fileBytes = System.IO.File.ReadAllBytes(fullPath);
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, filename);
}
else
return Content("");
}
我也试过这个:
<a href="@Url.Action("DownloadAnexo", "NoticiasController",
new { noticiaId = Model.ID, filename = f.File })">
Download
</a>
但我得到了相同的结果。我没有太多的经验与部分视图,所以我想知道,如果只是因为我从部分直接发送数据到控制器,可能是不可能的东西。IDK .
请帮助。
如果你有打字错误,NoticiasController应该是Noticias
@Html.ActionLink("Download", "DownloadAnexo", "Noticias", new { noticiaid = Model.ID, filename = f.File }, null)
和fix action too
public ActionResult DownloadAnexo([FromQuery] int? noticiaid, [FromQuery]string filename)