Ajax.BeginForm()を使用してファイルをアップロードしようとしていますが、機能しません。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[]
のファイルがサーバーに送信されていません。
を発見
を、それを解決し、この小さなハック、出くわした:あなたはページの帽子は、訪問者のファイルシステム上の任意のアクセス可能なファイルをアップロード構築できます彼に話すことなくサーバーに送信します。 – Robert