Ich danke zuerst alle Hilfe. Ich habe fast 7 Stunden ohne Erfolg damit verbracht.Senden von Wert und Datei von der Ansicht an den Controller von Ajax-Methode
Ich benutze ASP.net MVC 5. Ich erstelle einen Controller erstellen und eine Ansicht (mit Formular). Mein Formular erhält Informationen wie Name, Nachname, Titel, und so weiter. Ich möchte auch eine Datei hinzufügen, die auf dem Server gespeichert wird. I Form richtig denke ich
<form id="wizard-1" novalidate="novalidate" enctype="multipart/form-data">
...
<p> Date d'envoi :</p>
<label class="input margin-bottom-5">
<i class="icon-append fa fa-calendar"></i>
<input type="date" name="Date_envoie_OT" autocomplete="off" class="form-control">
</label>
...
<input type="file" name="file" id="file" />
<button type="button" class=" btn btn-primary">Enregistrer</button>
Ich habe auch Ajax-fonction
var data = new FormData();
var files = $("#file").get(0).files;
if (files.length > 0) { data.append("HelpSectionImages", files[0]); }
else {
common.showNotification('warning', 'Please select file to upload.', 'top', 'right');
return false;
}
var extension = $("#file").val().split('.').pop().toUpperCase();
if (extension != "PNG" && extension != "JPG" && extension != "GIF" && extension != "JPEG") {
common.showNotification('warning', 'Imvalid image file format.', 'top', 'right');
return false;
}
var OT = $('#wizard-1').serialize();
$.ajax({
url: '@Url.Action("Create")',
type: 'POST',
dataType: 'json',
processData: false,
contentType: false,
data: '{"OT":"' + $('#wizard-1').serialize() + '","Id_agence":"' + $('#Id_agence').serialize() + '", "data":"' + data + '"}',
success: function (data) {
$.smallBox({
title: "Enregistrement validé",
content: "<i class='fa fa-clock-o'></i> <i>L'O.T. a pas enregistré (prévenez le pool en charge)</i>",
color: "#E82E13",
iconSmall: "fa fa-times bounce animated",
timeout: 7000
});
Mein Controller getan haben
öffentlichen JsonResult erstellen (Ordre_Travaux OT, int Id_agence, HttpPostedFileBase Daten)
{
if (ModelState.IsValid)
{
try
{
if (System.Web.HttpContext.Current.Request.Files.AllKeys.Any())
{
var pic = System.Web.HttpContext.Current.Request.Files["HelpSectionImages"];
HttpPostedFileBase filebase = new HttpPostedFileWrapper(pic);
var fileName = Path.GetFileName(filebase.FileName);
var path = Path.Combine(Server.MapPath("~/UploadFile/"), fileName);
filebase.SaveAs(path);
return Json("File Saved Successfully.");
}
else { return Json("No File Saved."); }
}
catch (Exception ex) { return Json("Error While Saving."); }
Das Problem ist, dass ich OT Daten nicht erhalten ou in Controller-Server-Fehler 500, wenn ich in verwenden ajax function "processData: false", aber wenn ich es lösche, erhalte ich auf der Liste die OT-Werte, aber nicht die Datei.
Was habe ich vermisst? Bitte brauchen Sie Ihre Hilfe