hochladen Ich versuche, eine Datei mit Ajax.BeginForm() hochladen, aber es funktioniert nicht.nicht in der Lage, Datei mit Ajax.BeginForm() asynchron
Meine Ansicht Enthält:
@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" />
}
und der entsprechende Controller ist:
[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.";
}
}
Das Problem ist, dass es die Datei ist das Hochladen, aber nicht mehr tun, keine asynchronen Beiträge, wenn ich jquery.unobtrusive-ajax.js
entfernen. Stattdessen macht es einen vollständigen Post-Back.
Wenn ich hinzufügen jquery.unobtrusive-ajax.js
in meiner Ansicht, es tut asynchron, aber nicht senden Datei in Formulardaten. In Request.Files[]
wird keine Datei an den Server gesendet.
Es ist nicht möglich, mit Ajax aus offensichtlichen Gründen Gefunden löst: Sie eine Seite Hut uploads auf dem Besucher-Dateisystem alle zugängliche Datei aufbauen konnte zum Server ohne es ihm zu sagen. – Robert