ダイアログに表示するフォームがあり、クリックするとjQueryを使用してAJAXを使用してサーバーにフォームを送信する「送信」ボタンがあります。これはMVCアクションメソッドに対するものです。アップロードされたファイルは常にnullでした。Googleを使用していると、ある種のプラグインを使用しない限り、通常はAJAXを使用してファイルを投稿できないことを読みました。
プラグインを使用したくなかったのですが、これはHTML5ファイルAPIをサポートするブラウザーで実行できると読んだので、これで動作させたいと思います。
現時点では、ドラッグアンドドロップなどは気にしません。jQueryを使用して、フォームの残りの部分と一緒にファイルを投稿したいだけです。
これまでのところ:
これは、フォームの部分的なビューです。
@model ImageReceiptLineModel
@using (Html.BeginForm(MVC.EditImageReceiptLine(), FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.HiddenFor(model => model.ReceiptLineSetID)
@Html.HiddenFor(model => model.LineNumber)
<input id="uploadFile" name="uploadFile" type="file" value="Choose New Image" />
@Html.LabelFor(model => model.ImageDescription)
@Html.TextBoxFor(model => model.ImageDescription)
}
これは、フォームを送信するためのjQueryです。
if ($Form.valid()) {
// get the url and the form data to send the request
var Url = $Form.attr('action');
var FormData = $Form.serialize();
// now do the ajax call
$.ajax({
url: Url,
data: FormData,
type: 'POST',
cache: 'false',
success: function (data, textStatus, jqXHR) {
// do something here
},
error: function (jqXHR, textStatus, errorThrown) {
// do something here
}
});
}
MVCアクションメソッドは次のとおりです。
/// <summary>
/// Edit receipt line action
/// </summary>
/// <returns>Action result</returns>
[HttpPost]
public virtual ActionResult EditImageReceiptLine(HttpPostedFileBase uploadFile, ImageReceiptLineModel model)
{
}
ファイルをフォームに追加するには、これに何を追加する必要がありますか?「FormData」は、サーバーに投稿するシリアル化されたフォームデータです。