Asp.net mvc 4 在web应用程序的服务器上提供静态文件下载
我正在开发一个MVC4Web应用程序。在一个页面上,我提供了一个锚链接,它引用了应用程序目录中的一个文件。相同的代码是-Asp.net mvc 4 在web应用程序的服务器上提供静态文件下载,asp.net-mvc-4,razor,download,Asp.net Mvc 4,Razor,Download,我正在开发一个MVC4Web应用程序。在一个页面上,我提供了一个锚链接,它引用了应用程序目录中的一个文件。相同的代码是- @Html.Action("Download_Static_File", "Charge_Entry", new { File_Path = "../../Content/Templates/Pt_Data/Pt_Data.xls", File_Name = "Pt_Data_Template", value = "Download template" }); 我的动机是,
@Html.Action("Download_Static_File", "Charge_Entry", new { File_Path = "../../Content/Templates/Pt_Data/Pt_Data.xls", File_Name = "Pt_Data_Template", value = "Download template" });
我的动机是,文件应该在点击后下载
但是,当我单击链接时,会出现如下错误
找不到路径“C:\Program Files\Common Files\Microsoft Shared\Content\Templates\Pt\U Data\Pt\U Data.xls”的一部分
我也试过了
System.Web.HttpContext.Current.Server.MapPath
这导致了以下错误:
使用自定义TextWriter时,OutputStream不可用
正在调用的操作方法是:
public FileResult Download_Static_File(string File_Path,string File_Name)
{
byte[] fileBytes = System.IO.File.ReadAllBytes(File_Path);
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, File_Name);
}
这是正确的方法吗?任何帮助都将不胜感激
我还提到了这个您的锚似乎指向一个名为
下载静态文件
(很遗憾您没有显示)的控制器操作,并传递一个名为文件路径
的参数
您在视图中使用的@Html.Action
帮助程序正在尝试将指定的操作作为子操作执行。您可能会发现以下描述子操作的博客文章很有用:
我猜您试图实现的是在视图中生成一个锚,指向用户可以下载的静态文件。在这种情况下,您更希望将锚定标记与Url.Action
helper结合使用:
<a href="@Url.Content("~/Content/Templates/Pt_Data/Pt_Data.xls")">
Download_Static_File
</a>
然后在你看来,你会有一个锚到这个控制器的行动:
@Html.ActionLink(
linkText: "Download template",
actionName: "DownloadStaticFile",
controllerName: "Charge_Entry",
routeValues: new { filename = "Pt_Data.xls" },
htmlAttributes: null
)
您的锚点似乎指向名为
下载静态\u文件
(遗憾的是您没有显示)的控制器操作,并传递名为文件路径
的参数
您在视图中使用的@Html.Action
帮助程序正在尝试将指定的操作作为子操作执行。您可能会发现以下描述子操作的博客文章很有用:
我猜您试图实现的是在视图中生成一个锚,指向用户可以下载的静态文件。在这种情况下,您更希望将锚定标记与Url.Action
helper结合使用:
<a href="@Url.Content("~/Content/Templates/Pt_Data/Pt_Data.xls")">
Download_Static_File
</a>
然后在你看来,你会有一个锚到这个控制器的行动:
@Html.ActionLink(
linkText: "Download template",
actionName: "DownloadStaticFile",
controllerName: "Charge_Entry",
routeValues: new { filename = "Pt_Data.xls" },
htmlAttributes: null
)