2016-06-01 5 views
0

Ich versuche gerade, eine Liste von Aufgaben zu aktualisieren, nachdem der Benutzer eine neue Aufgabe gestellt hat. Ich versuche Ajax dabei zu benutzen. Wie auch immer, ich bin mir nicht sicher, wie ich Ajax zum Posten auf meinem Controller verwenden und dann zu meiner Liste hinzufügen kann. Wie verwende ich mein Datenfeld in meiner Ajax-Methode und wie aktualisiere ich meine Liste?Verwenden von Ajax zum Aktualisieren der Liste.

Mein Controller:

 [HttpPost] 
     Public ActionResult CreateDuty(PartialViewModel d) 
{ 
     db.DutiesTable.Add(d.OneDuty); 
        db.SaveChanges(); 
        pv.DutyList = db.DutiesTable.ToList(); 

        return View("Index"); 
    } 

Meine Ajax-Methode:

<script> 
    $('#getDuty').click(function() { 
     $.ajax({ 
      type: 'POST', 
      url: "/Home/CreateDuty", 
      data: {d : d} 
     }).success(function (data) { 
      alert(data + status); 
     }); 
    }); 
</script> 

Antwort

0

Nicht genügend Informationen. Woher kam d und was ist es (Javascript).

Für Ihren EF-Code gehe ich davon aus, dass DuttiesTable keine PartialViewModels enthält, so dass dort eine Zuordnung zwischen dem View-Modell und den EF-Model-Klassen stattfinden muss.

[HttpPost] 
Public ActionResult CreateDuty(DutyViewModel d) 
{ 
    Duty newduty = new Duty(){ /*map values from d to fields here*/} 
    db.Duties.Add(newduty); 
    db.SaveChanges(); 
    return View("Index"); 
} 

Sobald Sie Ihre Daten Posting über die Steuerung und Speicherung mit EF Sie entscheiden müssen, ob sie JavaScript eine Kopie der aktualisierten Einheit muss (kartiert zurück zu einem PartialViewModel höchstwahrscheinlich oder wenn ein einfacher Erfolg/Fehler Nachricht ist genug und tun, was es braucht auf dieser Seite. Ich weiß nicht, was du hier meinst: "und dann zu meiner Liste hinzufügen" - welche Liste?

+0

Meinst du das d in meiner Ajax-Methode in der Datenfeld? Ich hatte gehofft, das wäre das gleiche wie in der Steuerung. Allerdings bin ich nicht ganz sicher, wie man Ajax verwendet. Woher kommt die Variable "mappedduty"? Mit Liste meine ich die Liste, wo alle Aufgaben sind hinzugefügt. Das wäre die DutyList. Ist es möglich t o update es, so dass eine neue Aufgabe an der Spitze hinzugefügt werden würde? – Seb

+0

Ich werde meine Antwort mit einigen umbenannten Sachen aktualisieren, um es offensichtlicher zu machen. –

+0

Hilft das Update? Der Kernpunkt ist, dass die Ansichtsmodellklasse nicht mit der Pflichtklasse übereinstimmt. Sie müssen zwischen der EF-Klasse für die Tabelle und dem Ansichtsmodell für die Benutzeroberfläche zuordnen. Es gibt mehrere Frameworks, die das für Sie trivialisieren können, am populärsten ist Automapper. –