我可以将模型从视图传递给控制器​​而不使用Form吗?

时间:2010-09-27 08:41:49

标签: c# asp.net-mvc asp.net-mvc-2

嗨,大家好我将模型传递给控制器​​>我想知道这是一个好习惯还是可以这样做。这就是我想要实现的目标。

<% 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);

    }

我尝试传递字符串或整数及其可行性。但是当我想传递一个像上面这样的对象时,我得到一个空值。这样做的正确方法是什么?谢谢你!

1 个答案:

答案 0 :(得分:1)

使用FileStreamResult时,您需要为其提供代表文件内容的流,该流将被使用并发送到客户端。目前,您已经改为为其提供了ASP.NET响应流。它不可能从中读取(它只是一个输出流)。

因此;内容在哪里?打开那个的流并将其传入。根据您的实现,这可能意味着本地文件系统,网络文件系统,数据库,远程http(等)服务器,或者在内存中生成的东西(通常通过MemoryStream)。

同样,您可以告诉MVC内容类型是什么;你不应该使用Response.*中的值,因为这就是你正在构建的