如何通过MVC视图中的锚链接打开/下载静态文件

时间:2017-05-01 02:58:00

标签: c# asp.net-mvc asp.net-core-1.1

控制器:

[HttpGet]
public async Task<IActionResult> DownLoad_Files()
{
    return View();
}

查看 [DownLoad_Files.cshtml]:

<ul>
    <li><a href="docs/TestFile1.doc">File 1</a></li>
    <li><a href="docs/TestFile2.pdf">File 2</a></li>
    ....
</ul>

错误 [点击以上链接之一时]:

This localhost page can’t be found

No webpage was found for the web address: http://localhost:50507/ControllerName/docs/TestFile1.doc
Search Google for localhost 50507/ ....TestFile1.doc
HTTP ERROR 404

问题:如何使上述链接正常工作,以便链接文件在浏览器中打开(即下载)? 注意:我试图在Serving Static Files上关注此官方ASP.NET核心教程,并在docs文件夹下创建了wwroot文件夹

1 个答案:

答案 0 :(得分:3)

您可以使用~/作为路径的前缀

<a href="~/docs/TestFile1.doc">File 1</a>

假设您的docs文件夹位于应用程序的wwwroot目录中

,这应该可以正常工作

~/表示从应用内容根开始的路径。在asp.net核心中,默认情况下它将是wwroot

现在,当用户点击链接时,基于浏览器&amp;浏览器设置,它会询问用户提示他们可以选择将文件下载到目录或在浏览器中打开它(如果浏览器有支持插件来显示文档类型)