Как получить детали из ViewBag в строку для использования в FileStreamResult? - PullRequest
0 голосов
/ 02 мая 2020

Здравствуйте, умные программисты, я работаю над проектом MVC для колледжа и пытаюсь вывести счет, мне не нужно просматривать счет, просто создайте загружаемый текстовый файл. Я пытался использовать StringBuilder для получения деталей из ViewBag, но они не записываются в файл. Я использую @HtmlActionLink, чтобы создать его из представления. Я уверен, что я делаю что-то глупое, любой совет будет принята с благодарностью. Спасибо миллион.

Метод в моем контроллере:

public FileStreamResult Invoice()
    {
        StringBuilder sb = new StringBuilder("Your Invoice");

        sb.AppendLine(" ");
        sb.AppendLine("Id:"+ @ViewBag.ClientId);
        sb.AppendLine("Name:" + @ViewBag.Name);
        sb.AppendLine("Total:" + @ViewBag.Total);

        var invoiceDetails = sb.ToString();

        var byteArray = Encoding.ASCII.GetBytes(invoiceDetails);
        var stream = new MemoryStream(byteArray);


        return File(stream, "text/plain", "Invoice.txt");

    }

1 Ответ

0 голосов
/ 02 мая 2020

Вы можете передать параметр, идентификатор счета-фактуры, в действие, которое загружает счет-фактуру.

Ссылка действия для загрузки счета-фактуры с параметром ID:

@Html.ActionLink("Download invoice", "Invoice", "MyController", new { id = @Model.InvoiceId }) 

@Model.InvoiceId исходит из модели вида, отображающего счет.

Действие контроллера:

public FileStreamResult Invoice(int id)
{
    ...
}
...