Код контроллера:
[HttpGet]
public FileStreamResult GETPDF(string guid)
{
var stream = XeroHelper.GetXeroPdf(guid).Result;
stream.Position = 0;
var cd = new ContentDisposition
{
FileName = $"{guid}.pdf",
Inline = true
};
Response.AppendHeader("Content-Disposition", cd.ToString());
return File(stream, "application/pdf");
}
Как видите, метод называется GETPDF. Вы также можете видеть, что я настраиваю имя файла в заголовке ContentDisposition. Если вы увидите ниже, вы увидите, что имя метода используется в качестве заголовка на панели инструментов, а не имя файла.
Имя файла действительно сохраняется. Когда я нажимаю «Загрузить», имя файла является значением по умолчанию, которое используется в средстве выбора файлов (обратите внимание, я изменил имя, чтобы скрыть чувствительную направляющую):
Если у кого-то есть идеи, как переименовать заголовок этой панели инструментов, это будет с благодарностью.
Кроме того, это НЕ дубликат: C# MVC: Chrome с использованием имени действия для установки встроенного заголовка PDF , поскольку ответ не был принят, и единственный метод с ответами был реализован в моем методе выше и все еще не работает.
Редактировать - Для пояснения я не хочу открывать PDF в новой вкладке. Я хочу отобразить это в программе просмотра на моей странице. Такое поведение уже происходит с кодом, который я предоставил, это просто название, которое неверно и происходит от моего имени метода контроллера. Используя код контроллера, я показываю его в виде:
<h1>Quote</h1>
<object data="@Url.Action("GETPDF", new { guid = @Model.QuoteGuid })" type="application/pdf" width="800" height="650"></object>