ASP.NET MVC で、ファイルのアップロードを実現したい


前提・実現したいこと

ASP.NET MVC で、ファイルのアップロードを実現したいです。

  • 言語は C# です
  • .NET Framework のバージョンは 4.72 です
  • Ajax.BeginForm を使い Form を作っています
  • アップロードを行うコントローラーは、部分ビューの中に配置しています

発生している問題・エラーメッセージ

  • アップロードしたいファイルを選択して submit すると、
    サーバー側でファイルを受け取る HttpPostedFileBase が、常に null になってしまいます。

  • Request.Files も null になります

該当のソースコード

Index.cshtml
    @using (Ajax.BeginForm("Upload", "Test", new AjaxOptions
    {
        HttpMethod = "POST",
        UpdateTargetId = "Result"
    }, new { id = "AjaxForm", enctype = "multipart/form-data" }))
    {
        @Html.AntiForgeryToken()
        <div id="Result">
            @Html.Partial("_Page", Model)
        </div>
    }
_Page.cshtml
<input type="file" id="File" name="File" />
<input type="submit" value="アップロード" />

<button type="submit" name="Search">検索</button>
<button type="submit" name="Clear">クリア</button>

TestController.cs
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Upload(string Search, string Clear, HttpPostedFileBase File)
{
    // ここも null になる
    var uploadFile = Request.Files["File"];
}

試したこと

下記のページにあるように、HttpPostedFileWrapper を使う方法も試してみました。
https://www.ipentec.com/document/csharp-asp-net-mvc-upload-file

しかし、この方法だと、ボタンクリックで submit する時、
Internal Server Error が発生します。


おわかりの方がいらっしゃいましたら教えてください。
よろしくお願い致します。