2016-06-24 18 views
2

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フォームの提出を介してファイルを提出する際に本質的に異なっていますか?

+0

あなたのモデルプロパティと同じIDと名前をHTMLページに与えてから、 –

+0

をチェックしてみてください。 '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) –

答えて

1

スティーブンのコメントでは、jquery.unobtrusive-ajaxはファイルを送信するために使用できません。代わりに、これを達成するには、jQuery .ajax()メソッドとFormDataを使用する必要があります。

詳細については、Stephen's answer on another questionを参照してください。

関連する問題