web-dev-qa-db-ja.com

.NET Core RazorPagesを使用してブラウザにファイルをダウンロードします

ASP.NET Razor Pagesを使用して、ブラウザにファイルをダウンロードしようとしています。ページ(html)から、次のようなリンクを使用すると正常に機能します。

href="/DownloadableFiles/testB.csv" download="newname">Download Link

ただし、コードビハインドまたはViewModelからダウンロードを開始して、ファイル名が何であるかを動的にできるようにしたいので、最初にファイルを検査する必要があります。

ASP.NET MVCコア(RazorPagesではない)では、次を使用してコードでファイルをダウンロードできます。

return File(memory, GetContentType(path), Path.GetFileName(path));

だが return FileはRazorページではサポートされていません。

5
Bob Gundeck

pitaridisは正しいです、return FileはRazorPagesに存在します、名前空間が欠落していたに違いありません。これにより、CodeBehindからファイルがダウンロードされます。

このページの送信ボタンは次のとおりです。

<button type="submit" asp-page-handler="DownloadFile" style="width:75px" 
        class="cancel"> Download </button>

PageModel(コードビハインド):

public ActionResult OnPostDownloadFile()
{
    return File("/DownloadableFiles/TestFile34.csv", "application/octet-stream", 
                "NewName34.csv");
}

注:/ DownloadableFilesはwwwrootのサブフォルダーにあります

1
Bob Gundeck