@Html.来自PartialView的ActionLink没有找到我的控制器动作



我试图创建一个下载文件的动作链接。我在视图中得到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)

最新更新