2016-04-28 6 views
-2

Ich versuche immer noch zu verstehen, wie eine Liste von JSON-Objekten an einen Controller gesendet werden muss, um die Daten in einer SQL-Server-Datenbanktabelle "Eingeladene" zu speichern.Liste der JSON-Objekte zum Controller

Ein Beispiel wäre sehr nützlich.

JSON:

[{Email :"[email protected]",Presence :"nodig"},{Email :"[email protected]",Presence :"gewenst"}] 

Modell:

public class Invitee 
{ 
    public int Id { get; set; } 
    public int AppId { get; set; } 
    public string Email { get; set; } 
    public string Presence { get; set; } 
}; 

Controller: (Modell gibt einen Null exeption, Model = true)

[HttpPost] 
public JsonResult InviteeSave(List<Invitee> model) 
{ 
    if (ModelState.IsValid) 
    { 
     using (var db = new MainDbContext()) 
     { 
      var dbInv = db.Invitees.Create(); 

      foreach (var inv in model) 
      { 
       dbInv.AppId = 35; 
       dbInv.Email = inv.Email; 
       dbInv.Presence = inv.Presence; 

       db.Invitees.Add(dbInv); 
      } 

      db.SaveChanges(); 
     } 
    } 
    else 
    { 
     ModelState.AddModelError("", "Something went wrong"); 
    } 
    return Json(model); 
} 

jQuery Ajax:

$.ajax({ 
    url: '@Url.Action("InviteeSave", "App")', 
    dataType: "json", 
    type: "POST", 
    accept: 'appication/json; charset=utf-8', 
    cache: false, 
    data: JSON.stringify(jsonData), 
    success: function (data) { 
     if (data.success) { 
      alert("Met succes !"); 
     } 
    }, 
    error: function (xhr) { 
     alert('error'); 
    } 
}); 
+0

Es ist nichts falsch mit Ihrer AJAX-Request; Das Problem ist in C#. Was genau ist "Null"? Platzieren Sie einen Haltepunkt in der Aktion und durchlaufen Sie ihn bei Bedarf. –

+0

Rechtschreibfehler in 'appication' (fehlendes' l') –

+0

Entschuldigung dafür. In der Steuerung 'Modell' gibt eine Null Ausnahme – wintee

Antwort

0

Entschuldigung Sie können keine Sammlung (Liste) von benutzerdefinierten Typen senden. Es gibt eine Arbeit herum.

der Controller-Parameter Typ Stellen als

Table Art von

# C

dann über Ajax Ihre Daten veröffentlichen. Für mich geht das.

$.ajax({ 
     type: "POST", 
     url: "URL/api/.....", 
     data: {Email :"[email protected]",Presence :"nodig"},{Email :"[email protected]",Presence :"gewenst"}, 
    }).done(function(data){ 
     console.log(data) 
}); 

Ich habe diese Arbeit in meinem Web-App zur Zeit

EDIT: Sie können Liste veröffentlichen; Liste von String zu Controller-Parameter zu. Dann können Sie Ihre Daten entsprechend sortieren.

0

Nein, Sie können die Sammlung von Elementen an die Controller-Post-Aktionsmethode senden.

[HttpPost] 
public JsonResult InviteeSave(List<Invitee> model) 
{ 
    //Your code goes here 
} 

JS: //

$.ajax({ 
      url: "InviteeSave", 
      dataType: "json", 
      type: "POST", 
      contentType: 'application/json; charset=utf-8', 
      cache: false, 
      data: JSON.stringify({ model: jsonData }), 
      success: function(data) { 
       if (data.success) { 
        alert("Met succes !"); 
       } 
      }, 
      error: function(xhr) { 
       alert('error' + 'Came here'); 
      } 
     }); 
(url: '/ controller/Verfahren /': sollte action, Controller, falls Sie verwenden @ Url.Action() oder auch einfach url geben sein)

Meine Ansicht ist,

<form id="frmInvitee" action="javascript:void(0)"> 
    <input type="submit" name="BtnSumbit" id="BtnSumbit" /> 
</form> 

Veröffentlichen Sie Ihre Ansicht ... Es funktioniert für mich ...

Verwandte Themen