Ajax.BeginForm() を使用してファイルをアップロードしようとしていますが、うまくいきません。
私の見解には以下が含まれます:
@using (Ajax.BeginForm("UploadFile", null, new AjaxOptions { HttpMethod="POST", UpdateTargetId = "result" }, new { enctype = "multipart/form-data" }))
{
<label id="lblUploadNewFile" for="fileUploadControl">Upload New File</label>
<input type="file" name="fileToUpload" id="fileUploadControl"/>
<input id="btnFileUpload" type="submit" value="Upload" />
<span id="result" />
}
対応するコントローラーは次のとおりです。
[HttpPost]
public string UploadFile(FormCollection formData)
{
HttpPostedFileBase file=null;
try
{
file = Request.Files[0];
}
catch { }
if ( file!=null && file.ContentLength > 0)
{
file.SaveAs(string.Concat(
AppDomain.CurrentDomain.BaseDirectory,
Path.GetFileName(file.FileName)));
return "Successfully Uploaded";
}
else
{
return "Upload Failed, please try again.";
}
}
問題は、ファイルをアップロードしていることですが、削除すると非同期投稿が行われなくなりますjquery.unobtrusive-ajax.js
。代わりに、完全なポストバックを行います。
ビューに追加するjquery.unobtrusive-ajax.js
と、非同期で実行されますが、フォーム データでアップロード ファイルが送信されません。でサーバーにファイルが送信されていませんRequest.Files[]
。