it-swarm.com.de

Wie man einen ganzen Satz von Modellen an Formdaten anhängt und in MVC erhält

Wie kann ich ein gesamtes Modellobjekt durch Formdaten übergeben und in den Modelltyp im Controller konvertieren?

Unten ist was ich probiert habe!

JavaScript-Teil:

model = {
             EventFromDate: fromDate,
             EventToDate: toDate,
             ImageUrl: imgUrl,
             HotNewsDesc: $("#txthtDescription").val().trim(),
        };
formdata.append("model",model);

wenn Sie den Wert von Request.Form["model"] überprüfen, wird das Ergebnis das gleiche sein, dh es wird als Zeichenfolge empfangen und der Wert wird "[object object]"

Gibt es eine Möglichkeit, das Modell durch die Formdaten zu übergeben und im Controller zu empfangen?  

53
Guruprasad Rao

Wenn Ihre Ansicht auf einem Modell basiert und Sie die Steuerelemente in <form>-Tags generiert haben, können Sie das Modell mit FormData serialisieren

var formdata = new FormData($('form').get(0));

Dies schließt auch alle Dateien ein, die mit <input type="file" name="myImage" .../> erstellt wurden.

und poste es mit

$.ajax({
  url: '@Url.Action("YourActionName", "YourControllerName")',
  type: 'POST',
  data: formdata,
  processData: false,
  contentType: false,         
});

und in Ihrem Controller

[HttpPost]
public ActionResult YourActionName(YourModelType model)
{
}

oder (falls Ihr Modell keine Eigenschaft für HttpPostedFileBase enthält)

[HttpPost]
public ActionResult YourActionName(YourModelType model, HttpPostedFileBase myImage)
{
}

Wenn Sie zusätzliche Informationen hinzufügen möchten, die nicht im Formular enthalten sind, können Sie sie mit anhängen

formdata.append('someProperty', 'SomeValue');
76
user3559349

Wenn Sie Formulardaten mit Ajax senden möchten. Dies ist der Weg, um zu senden 

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) {
    }
})
16
user3824027

In der Ansichtsseite, wenn Sie Ajax dann verwenden,

$('#button_Id').on('click', function(){
        var Datas=JSON.stringify($('form').serialize());
        $.ajax({
            type: "POST",
            contentType: "application/x-www-form-urlencoded; charset=utf-8",
            url: '@Url.Action("ActionName","ControllerName")',
            data:Datas,
            cache: false,
            dataType: 'JSON',
            async: true,
            success: function (data) {

            },
        });
    });

Auf der Controller-Seite

 [HttpPost]
 public ActionResult ActionName(ModelName modelObj)
 {
 //Some code here
 }
0
Sam