ASP.NET MVC 4 を使用してファイル アップロード機能を作成する際に、アクションで POST されたファイルが null になるという問題が発生しました。
Razor (動作中のファイル変数が null になります)
@using (Html.BeginForm("Upload", "Trip", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" name="file" id="file" />
<button type="submit">Upload</button>
@Html.ValidationSummary(true);
}
かみそり(うまく機能します)
@using (Html.BeginForm("Upload", "Trip", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" name="file" id="file" />
<input type="submit" value="upload" />
@Html.ValidationSummary(true);
}
アクション
public ActionResult Upload(HttpPostedFileBase file)
{
//The action executes but file is null when using <button>
}
Phill Haack によるよく引用される記事を読みましたが、私たちの実装の唯一の違いは、私が使用する<input type="submit" />
where 要素を使用すること<button type="submit">
です。私の理解では、これらの HTML 要素は両方とも同じ方法で投稿されます。<button>
ボタンに CSS スタイルを適用するために を使用しています。
<input>
ファイルは問題なく投稿されますが、<button>
実装では投稿されない理由はありますか?