Comment ajouter l'ensemble du modèle à formdata et l'obtenir dans MVC
Comment puis-je passer un objet modèle ensemble entier via formdata et le convertir en type de modèle dans le contrôleur?
Voici ce que j'ai essayé!
Partie JavaScript:
model = {
EventFromDate: fromDate,
EventToDate: toDate,
ImageUrl: imgUrl,
HotNewsDesc: $("#txthtDescription").val().trim(),
};
formdata.append("model",model);
Ensuite, passez-le à travers AJAX, ce sera une chaîne, et si je vérifie la valeur de Request.Form["model"]
le résultat sera le même, c'est-à-dire qu'il sera reçu comme chaîne et la valeur sera "[object object]"
Existe-t-il un moyen de passer le modèle à travers formdata et de le recevoir dans le contrôleur?
2 réponses
Si votre vue est basée sur un modèle et que vous avez généré les contrôles à l'intérieur des balises <form>
, vous pouvez sérialiser le modèle à FormData
en utilisant
var formdata = new FormData($('form').get(0));
Cela inclut tous les fichiers générés avec <input type="file" name="myImage" .../>
Et postez - le en utilisant
$.ajax({
url: '@Url.Action("YourActionName", "YourControllerName")',
type: 'POST',
data: formdata,
processData: false,
contentType: false,
});
Et dans votre contrôleur
[HttpPost]
public ActionResult YourActionName(YourModelType model)
{
}
, Ou (si votre modèle n'inclut pas de propriété pour HttpPostedFileBase
)
[HttpPost]
public ActionResult YourActionName(YourModelType model, HttpPostedFileBase myImage)
{
}
Si vous souhaitez ajouter des informations supplémentaires qui ne sont pas dans le formulaire, vous pouvez les ajouter en utilisant
formdata.append('someProperty', 'SomeValue');
Si vous souhaitez envoyer des données de formulaire en utilisant Ajax.C'est la façon d'envoyer
var formData = new FormData();
//File Upload
var totalFiles = document.getElementById("Iupload").files.length;
for (var i = 0; i < totalFiles; i++) {
var file = document.getElementById("Iupload").files[i];
formData.append("Document", file);
}
formData.append("NameCode", $('#SelecterID').val());
formData.append("AirLineCode", $('#SelecterID').val());
$.ajax({
url: "/Controller/ActionName",
type: "POST",
dataType: "JSON",
data: formData,
contentType: false,
processData: false,
success: function (result) {
}
})