嗨,大家好我将模型传递给控制器>我想知道这是一个好习惯还是可以这样做。这就是我想要实现的目标。
<% foreach (DownloadFile file in Model){ %>
<a href="<%= Url.Action("DownloadFile", new { File = file}) %>">click here to download</a>
<% } >%
我想将DownloadFile对象“文件”传递给我的控制器,如下所示:
public ActionResult DownloadLabTestResult(DownloadFile File)
{
DownloadFile file = File;
...
return new FileStreamResult(Response.OutputStream, Response.ContentType);
}
我尝试传递字符串或整数及其可行性。但是当我想传递一个像上面这样的对象时,我得到一个空值。这样做的正确方法是什么?谢谢你!
答案 0 :(得分:1)
使用FileStreamResult
时,您需要为其提供代表文件内容的流,该流将被使用并发送到客户端。目前,您已经改为为其提供了ASP.NET响应流。它不可能从中读取(它只是一个输出流)。
因此;内容在哪里?打开那个的流并将其传入。根据您的实现,这可能意味着本地文件系统,网络文件系统,数据库,远程http(等)服务器,或者在内存中生成的东西(通常通过MemoryStream
)。
同样,您可以告诉MVC内容类型是什么;你不应该使用Response.*
中的值,因为这就是你正在构建的 。