2016-04-16 9 views
-1

Ich versuche, die Daten in der Datenbank zu speichern, die aus Sicht übergeben, indem Sie Post verwenden. Ich bekomme keinen Fehler, aber es ist kein Wert in die Datenbank hinzufügen.MVC kann keine Daten in der Datenbank speichern

meine Json schauen ist wie

{ 
    "Schedule Name": "name1", 
    "data1": "a3c1", 
    "data2": "a3c1", 
    "data3": "a3c1", 
    "data4": "a3c1", 
    "data5": "a3c1", 
    "data6": "a3c1", 
    "data7": "a3c1" 
} 

hier ist mein Controller

public class ScheduleController : Controller 
{ 
    DatabaseContext _db = new DatabaseContext(); 

    public ActionResult schedule() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Addmore(string list1) 
    { 
     bool result = true; 
     newlist personData; 
     JavaScriptSerializer jss = new JavaScriptSerializer(); 
     personData = jss.Deserialize<newlist>(list1); 
     savv(personData); 
     return Content(result.ToString()); 
    } 

    public void savv(newlist nl) 
    { 
     if (ModelState.IsValid) 
     { 
      using (_db) 
      { 
       _db.Schedule.Add(nl); 
       _db.SaveChanges(); 
       ModelState.Clear(); 
      } 
     } 
    } 

    public class newlist 
    { 
     public string namIDs { get; set; } 
     public string aIDs { get; set; } 
     public string bIDs { get; set; } 
     public string cIDs { get; set; } 
     public string dIDs { get; set; } 
     public string eIDs { get; set; } 
     public string fIDs { get; set; } 
     public string gIDs { get; set; } 
    } 
} 

hier ist meine db

public class DatabaseContext : DbContext 
{ 
    public DatabaseContext() 
     : base("DefaultConnection") 
    { 

    } 
    public DbSet<ScheduleController.newlist> Schedule { get; set; } 

}

hier ist mein Beitrag

table_content = JSON.stringify({ 'Schedule Name': def ,'data1':data1 ,'data2':data2,'data3':data3,'data4':data4,'data5':data5,'data6':data6,'data7':data7}); 
    alert(table_content); 
    $.post(url1, { 
     jsonData: table_content 
    }, 
    function (data, textStatus) { 
     alert(textStatus); 
     if (textStatus != "success") { 
      alert(textStatus); 
     } 
    }); 

der Text Status immer "Erfolg" zurück, aber kein Wert speichern in Datenbank Jeder kann mir helfen? Anythings Ich verpasse Code?

benutze ich nur einen anderen Weg, um den Wert in die Datenbank zu speichern

public ActionResult Addmore(newlist personData) 
    { 
     var data1 = "hello"; 
     bool result = false; 
     try 
     { 
      con.Open(); 
      //SqlCommand cmd = new SqlCommand("Insert INTO Sche values('" + personData.namIDs + "','" + personData.aIDs + "','" + personData.bIDs + "','" + personData.cIDs + "','" + personData.dIDs + "','" + personData.eIDs + "','" + personData.fIDs + "','" + personData.gIDs + "')", con); 
      SqlCommand cmd = new SqlCommand("INSERT INTO Sche VALUES('" + data1 + "','" + data1 + "','" + data1 + "','" + data1 + "','" + data1 + "','" + data1 + "','" + data1 + "','" + data1 + "')", con); 

      int i = cmd.ExecuteNonQuery(); 
      con.Close(); 
      if (i > 0) { result = true; } 

     } 
     catch (Exception e) 
     { 
      result = false; 
     } 
     return Content(result.ToString()); 
    } 

Aber es immer noch nicht funktioniert für mich

auch durch ich dies auf Code eingeben

SqlCommand cmd = new SqlCommand("INSERT INTO Sche VALUES(1,2,3,4,5,6,7,8)", con); 

aber seine immer noch kein Hinzufügen zur Datenbank Dies ist kein Verbindungsfehler, da diese Befehlszeile

funktionieren kann

Zeichenfolge Abfrage = "SELECT * FROM Sche"; SqlCommand-Befehl = neuer SqlCommand (Abfrage, Verbindung);

+1

Sie haben so viele Fehler, es ist schwer zu wissen, wo ich anfangen soll. Beginnen Sie mit der Änderung Ihrer Methode auf 'public ActionResult Addmore (newlist model)'. Verwenden Sie im Ajax 'data: {namIDs: 'abc', aIDs: 'def', cIDs: 'ghi', .... usw.}, d. H. Um den Modelleigenschaften zu entsprechen. Der Parameter 'model' wird mit den korrekten Werten gebunden, die Sie eingeben –

Antwort

0

Diese

[HttpPost] 
public ActionResult Addmore(newlist personData) 
{ 
    bool result = true; 
    JavaScriptSerializer jss = new JavaScriptSerializer(); 

    savv(personData); 
    return Content(result.ToString()); 
} 

Ajax Versuchen:

$.ajax({ 
    url: '@Url.Action("Addmore", "Schedule")', 
    data: JSON.stringify({ namIDs : 'def' ,aIDs:'data1' ,bIDs :'data2',cIDs :'data3',dIDs :'data4',eIDs :'data5',fIDs :'data6',gIDs:'data7'}), 
    dataType: 'json', 
    type: 'POST', 
    contentType: "application/json; charset=utf-8", 
    success: function (data) { 
     } 
}); 
0

Der Parametername Ihrer Aktion und der Name des Postparameters müssen übereinstimmen. Ändern Sie jsonData-list1 oder umgekehrt

-1

Persönlich würde ich nicht MVC-Controller verwenden und stringify die json als sie den Datentyp ändern würde. Veröffentlichen Sie die Daten unverändert und verwenden Sie stattdessen die Web-API. Es hat einen eingebauten Mechanismus zum Parsen von JSON-Daten

+0

Wenn nur die Daten gepostet werden, wie erhält der Controller die Daten? –

+0

Verwenden Sie am besten den Web-API-Controller. Wissen Sie, wie Sie den Web-API-Controller erstellen? Wenn nicht, siehe den folgenden Link http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api – ar3a51

+0

MVC wird auch JSON parsen Daten direkt in das Modell! –

Verwandte Themen