jquery-ajax-unobtrusiveライブラリを使用して、previously existing tag helpersを追加して、ajaxリクエストを介して送信するフォームをすばやく作成します。ASP.NET MVC 6のファイルを使用したAjaxフォームの提出
これは私にこのような何か与える:
<form id="person-create" enctype="multipart/form-data" asp-controller="Person" asp-action="Create" asp-route-id="1" data-ajax="true" data-ajax-method="POST" role="form">
<!-- There are other inputs for the other items. -->
<input id="photo-upload" asp-for="Photo" type="file">
</form>
をフォームには、フォーム内の私が持っているファイルの入力は常にnull値と伝わってくるという事実を除いて、素晴らしい提出します。テストとして、私はajaxを使用しないようにフォームを元に戻し、すべてが正しく送信されます。また、jQueryの.ajax
関数を直接呼び出すことで、手動で提出を試みましたが、jquery-ajax-unobtrusiveと同じ問題が発生しました。私のコントローラのエンドポイントは、次のようになります
:
public async Task<IActionResult> Create(int id, PersonViewModel person)
{
// Do stuff...
}
そしてPersonViewModelで、私はこのようになりますクラスを持っている:
public class PersonViewModel
{
public int PersonId { get; set; }
public string Name { get; set; }
public IFormFile Photo { get; set; }
}
私はちょうど何かを明らかに不足している、または何かがそこにあるアムAjaxフォームの提出を介してファイルを提出する際に本質的に異なっていますか?
あなたのモデルプロパティと同じIDと名前をHTMLページに与えてから、 –
をチェックしてみてください。 'jquery.unobtrusive-ajax'を使ってファイルを送信できません。 [this answer](http://stackoverflow.com/questions/29293637/how-to-append-whole-set-of-model)で説明されているように、jQueryの '.ajax()'メソッドと 'FormData'を使うことができます。 -to-form-data-and-it-in-mvc/29293681#29293681) –