Могу ли я передать модель из вида на контроллер без формы? - PullRequest
2 голосов
/ 27 сентября 2010

Привет, ребята, у меня трудности с передачей моей модели контроллеру.> Интересно, это хорошая практика или это возможно. Вот чего я хочу достичь.

<% 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 Ответ

1 голос
/ 27 сентября 2010

При использовании FileStreamResult вам необходимо предоставить ему поток, представляющий содержимое файла, которое будет использовано и отправлено клиенту.В настоящее время вы вместо этого предоставили поток ответов ASP.NET.Он не может читать из этого (это поток только для вывода).

Итак;где находится содержимое?Откройте поток для , который и передайте его. В зависимости от вашей реализации это может означать локальную файловую систему, сетевую файловую систему, базу данных, удаленный сервер http (и т. Д.) Или что-то подобное.генерируется в памяти (обычно через MemoryStream).

Точно так же вы должны сообщить MVC, что такое тип содержимого;Вы не должны использовать значение из Response.*, так как это то, что вы создаете .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...