2016-03-30 12 views
-2

Ich bin noch neu bei MVC. Jetzt in meinem Controller möchte ich grundlegende CRUD wie Create, Edit, Details durchführen.Implementierung von CRUD in MVC

Ich benutze MySql als Datenbank.

Wenn ich das Programm im Debug-Modus ausführen, zeigt es keinen Fehler. Aber, in Create-Seite, wenn ich auf "Senden" -Button klicken, werden die neuen Daten nicht im Index aktualisiert. Ich habe mich gefragt warum und brauche hier Hilfe.

Könnt ihr mir sagen, wo ich in create und edit falsch mache? Danke im Voraus.

Controller:

//GET UserActivity/Details/5 
    public ActionResult Details(int id) 
    { 
     string sqlQuery = @" 
      SELECT ua.Id 
      ,ua.CreatedBy 
      ,ua.CreatedOn 
      ,ua.ModifiedBy 
      ,ua.ModifiedOn 
      ,ua.ContactId 
      ,ua.EntityName 
      ,ua.EntityId 
      ,ua.StatusCode 
      ,ua.StateCode 
      ,ua.ActivityType 
      ,ua.ActivityStatus 
      ,ua.DueDate 
      ,ua.ActualEndDate 
      ,ua.MasqueradeOn 
      ,ua.MasqueradeBy 

      FROM UserActivity ua 
      INNER JOIN Contact c ON c.Id = ua.ContactId 
      WHERE ua.id = @UserActivityId 
     "; 

     UserActivityModels userActivity = null; 

     using (IDbConnection db = new MySqlConnection 
      (ConfigurationManager.ConnectionStrings["CRMPORTALSQLCONN"]. 
      ConnectionString)) 
     { 
      userActivity = (UserActivityModels)db.Query<UserActivityModels>(sqlQuery 
       , new 
       { 
        @UserActivityId = id 
       }).FirstOrDefault(); 

     } 
     return View(userActivity); 
    } 

    /* // POST: /UserActivity/Details 
    [HttpPost] 
    public ActionResult Details(FormCollection collection) 
    { 
     try 
     { 
      // TODO: Add insert logic here 

      return RedirectToAction("Details"); 
     } 
     catch 
     { 
      return View(); 
     } 
    } 
    */ 


    //----------------------------------------------------------------------------------------------------// 


    //GET /UserActivity/Create 
    public ActionResult Create() 
    { 

     return View(); 
    } 


    // 
    // POST: /UserActivity/Create 
    [HttpPost] 
    public ActionResult Create(FormCollection collection) 
    { 
     try 
     { 
      /* 
      if (ModelState.IsValid) 
      { 
       userActivity.Add(useractivity); 
       */ 
      UserActivityModels useractivity = new UserActivityModels(); 

      int Id = Convert.ToInt32(collection["Id"]); 
      int CreatedBy = Convert.ToInt32(collection["Created By"]); 
      DateTime CreatedOn = Convert.ToDateTime(collection["Created On"]); 
      int ModifiedBy = Convert.ToInt32(collection["Modified By"]); 
      DateTime ModifiedOn = Convert.ToDateTime(collection["Modified On"]); 
      string ContactId = collection["Contact Id"]; 
      int StatusCode = Convert.ToInt32(collection["Status Code"]); 
      int StateCode = Convert.ToInt32(collection["State Code"]); 
      string EntityName = collection["Entity Name"]; 
      int EntityId = Convert.ToInt32(collection["Entity Id"]); 
      DateTime DueDate = Convert.ToDateTime(collection["Due Date"]); 
      DateTime ActualEndDate = Convert.ToDateTime(collection["Actual EndDate"]); 
      DateTime MasqueradeOn = Convert.ToDateTime(collection["Masquerade On"]); 
      DateTime MasqueradeBy = Convert.ToDateTime(collection["Masquerade By"]); 
      string ContactName = collection["Contact Name"]; 

      userActivity.Add(useractivity); 


      return RedirectToAction("Index"); 

     } 

     catch 
     { 
      return View(); 
     } 

    } 




    //---------------------------------------------------------------------// 



    // GET: /UserActivity/Edit/5 
    public ActionResult Edit(int id) 
    { 
     //ConfigurationManager.ConnectionStrings["CRMPORTALSQLCONN"].ConnectionString); 
     string query = @" 
      SELECT ua.Id 
      ,ua.CreatedBy 
      ,ua.CreatedOn 
      ,ua.ModifiedBy 
      ,ua.ModifiedOn 
      ,ua.ContactId 
      ,ua.EntityName 
      ,ua.EntityId 
      ,ua.StatusCode 
      ,ua.StateCode 
      ,ua.ActivityType 
      ,ua.ActivityStatus 
      ,ua.DueDate 
      ,ua.ActualEndDate 
      ,ua.MasqueradeOn 
      ,ua.MasqueradeBy 
    ,concat(c.FirstName, ' ', c.LastName) AS ContactName 
      FROM UserActivity ua 
      INNER JOIN Contact c ON c.Id = ua.ContactId 
      WHERE ua.id = @userActivityId 

     "; 

     UserActivityModels userActivity = null; 

     using (IDbConnection db = new MySqlConnection(ConfigurationManager. 
      ConnectionStrings["CRMPORTALSQLCONN"].ConnectionString)) 
     { 
      // userActivity = (UserActivityModels)db.Query<UserActivityModels>(query); 


      userActivity = db.Query<UserActivityModels>(query 
       , new 
       { 
        @UserActivityId = id 
       }).FirstOrDefault(); 
     } 
     return View(userActivity); 
    } 

    // POST: /UserActivity/Edit/ 
    [HttpPost] 
    public ActionResult Edit() 
    { 
     if (ModelState.IsValid) 
     { 

      // TODO: Add update logic here 

      return RedirectToAction("Index"); 
     } 
     return View(userActivity); 

    } 


    //------------------------------------------------------------------------// 


    // GET: /UserActivity/Delete/ 
    public ActionResult Delete(int? id) 
    { 
     return View(); 
    } 

    // POST: /SavedCar/Delete/5 
    [HttpPost] 
    public ActionResult Delete(int id, FormCollection collection) 
    { 


     try 
     { 
      // TODO: Add delete logic here 

      return RedirectToAction("Index"); 
     } 
     catch 
     { 
      return View(); 
     } 
    } 
} 

userActivity Modell:

public class UserActivityModels 
{ 
    [Display(Name = "Id")] 
    public int Id { get; set; } 

    [Display(Name = "Created By")] 
    public int CreatedBy { get; set; } 

    [Display(Name = "Created On")] 
    [DataType(DataType.DateTime)] 
    public DateTime CreatedOn { get; set; } 

    [Display(Name = "Modified By")] 
    public int ModifiedBy { get; set; } 

    [Display(Name = "Modified On")] 
    [DataType(DataType.DateTime)] 
    public DateTime ModifiedOn { get; set; } 

    [Display(Name = "Contact Id")] 
    public string ContactId { get; set; } 

    [Display(Name = "Entity Name")] 
    public string EntityName { get; set; } 

    [Display(Name = "Entity Id")] 
    public int EntityId { get; set; } 

    [Display(Name = "Status Code")] 
    public int StatusCode { get; set; } 

    [Display(Name = "State Code")] 
    public int StateCode { get; set; } 

    [Display(Name = "Activity Type")] 
    public int ActivityType { get; set; } 

    [Display(Name = "Activity Status")] 
    public string ActivityStatus { get; set; } 

    [Display(Name = "DueDate")] 
    [DataType(DataType.DateTime)] 
    public DateTime DueDate { get; set; } 

    [Display(Name = "Actual EndDate")] 
    [DataType(DataType.DateTime)] 
    public DateTime ActualEndDate { get; set; } 

    [Display(Name = "Masquerade On")] 
    [DataType(DataType.DateTime)] 
    public DateTime MasqueradeOn { get; set; } 

    [Display(Name = "Masquerade By")] 
    public int MasqueradeBy { get; set; } 

    [Display(Name = "Contact Name")] 
    public string ContactName { get; set; } 
+0

Titel ist wirklich irreführend. Das Problem ist, dass Ihr Code nicht mit Ihrer MySQL-Datenbank kommuniziert. Nicht CRUD oder MVC ... – Smartis

Antwort

0

ein Element Hinzufügen von nur userActivity nicht aktualisiert die Datenbank .So jedes Mal, wenn Sie die Seite zu zeigen versucht, es neu zu erstellen a neue Steuerung und auch eine neue BenutzerActivity. Um dies zu lösen, in der Create Action, müssen Sie die neue Benutzeraktivität in die Datenbank einfügen, nicht in userActivity.

1

In Ihrer Update-Methode sollten Sie das Modell greifen und es dann der Datenbank zuführen.

Hier ein paar einfache Beispiele:

[Post] 
public ActionResult Add(User u) { 
    // Need to define 'db' as a Data connection 
    db.Users.Add(u); 
    db.SubmitChanges(); 
    return View(u); 
} 


[Post] 
public ActionResult Update(User u) { 
    // Need to define 'db' as a Data connection 
    var updatedUser = db.Users.Where(k=>k.Id == u.Id).FirstOrDefault(); 
    updatedUser = u; 
    db.SubmitChanges(); 
    return View(updatedUser); 
} 
+0

Was ist, wenn ich db von MySql verwende? ist das meine ich brauche MySql Verbindungszeichenfolge? – Botski

0

Neues Beitrag Steuerung Sie haben

int Id = Convert.ToInt32(collection["Id"]); 

Wenn die Id Autoinkrement ist, die Sie gerade int setzen Id = 0 oder Sie don‘ t muss es bereitstellen. Wenn Sie die ID selbst angeben, kann es möglicherweise nicht kopiert und eingefügt werden. In Bezug auf die Bearbeitungsansicht ist es wichtig, dass die ID ausgeblendet ist, damit Sie die korrekte ID wirklich aktualisieren können. Überprüfen Sie Folgendes: - Ihre MySQL-Tabellenstruktur - Entfernen Sie das Id-Feld in der Erstellungsansicht - Fügen Sie ein ausgeblendetes Id-Feld in der Bearbeitungsansicht hinzu - Überprüfen Sie Ihre Controller.

+0

Ich habe die ID im Controller löschen und anzeigen. Aber immer noch ... – Botski

+0

Blick auf Ihren Controller int CreatedBy = Convert.ToInt32 (Sammlung ["Erstellt von"]) ;, Ich glaube nicht, dass Formularsammlung Werte mit Leerzeichen wie "Erstellt von" zurückspeichern ... Versuchen Sie zu debuggen um zu sehen, was passiert. – samvietnam