J'essaye de télécharger un fichier en utilisant AJAX en utilisant C# -Razor. Lorsque je soumets en cliquant sur le bouton, la méthode du contrôleur n'est pas en cours d'exécution. Comment puis-je resoudre ceci ?Télécharger le fichier à l'aide de MVC Razor à partir d'Ajax - Problème de logique débutant
Mon code est le suivant:
Voir
<div class="form-group">
@Html.TextBoxFor(model => model.IMG, new { @class = "control-label col-md-12", type = "file", placeholder = "Industry", name = "files[]", id="FileUpload" })
@Html.LabelFor(model => model.IMG, new { @class = "col-md-12 " })
@Html.ValidationMessageFor(model => model.IMG)
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="button" value="Create" class="btn btn-default" id="UseShipAddr" />
</div>
</div>
AJAX
$('#UseShipAddr').click(function() {
var formData = new FormData();
var totalFiles = document.getElementById("FileUpload").files.length;
for (var i = 0; i < totalFiles; i++) {
var file = document.getElementById("FileUpload").files[i];
formData.append("IMG", file);
alert("h" + file);
}
formData.append("name", "James");
formData.append("age", "1");
$.ajax({
url: "/Post/New",
type: "POST",
data: formData,
cache: false,
async: true,
success: function (data) {
alert(data);
}
});
});
Contrôleur
[HttpPost]
//[ValidateAntiForgeryToken]
public async Task<ActionResult> New([Bind(Include="age","name","IMG")] POST rec)
{
if (ModelState.IsValid)
{
db.REC.Add(rec);
await db.SaveChangesAsync();
return RedirectToAction("My", "Post");
}
return View(rec);
}
Est-ce que vous pointez sur l'adresse URI correcte, '"/Post/New "' et le nom de la méthode? 'Create'? – Satpal
C'était une faute de frappe. Je l'ai corrigé maintenant. Le problème existe toujours. – Illep
Vous ne définissez pas les bonnes options ajax, et vous pouvez simplement utiliser 'var formdata = new FormData ($ ('form'). Get (0));' pour sérialiser tout - se référer [cette réponse] (http: // stackoverflow .com/questions/29293637/how-to-append-ensemble-de-model-to-formdata-et-get-it-in-mvc/29293681 # 29293681) (et ensuite '.append()' si vous Envie d'envoyer des données supplémentaires qui ne sont pas dans un contrôle de formulaire –