2016-03-30 12 views
-2

私はまだMVCを初めて使っています。今私のコントローラでは、作成、編集、詳細などの基本的なCRUDを実行したいと考えています。MVCでのCRUDの実装

私はデータベースとしてMySqlを使用しています。

デバッグモードでプログラムを実行すると、エラーは表示されません。しかし、作成ページで、「送信」ボタンをクリックすると、入力された新しいデータはインデックス内で更新されません。なぜ私はここに助けが必要なのだろうと思っていた。

あなたは私が間違って作成および編集する場所を教えてもらえますか?前もって感謝します。

コントローラ:

//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モデル:

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

タイトルは本当に誤解を招くものです。問題は、コードがMySQLデータベースと通信していないことです。 CRUDまたはMVCではありません... – Smartis

答えて

0

データベース。だからあなたがページを表示しようとするたびに更新されていないだけuserActivityに要素を追加し、それを再作成します新しいコントローラnew userActivity。これを解決するには、Create Actionの場合、userActivityではなく、データベースに新しいユーザー活動を追加する必要があります。

1

更新メソッドでは、モデルを取得してデータベースに供給する必要があります。

ここでは簡単な例をいくつます:

[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

MySqlからdbを使用するとどうなりますか? MySql接続文字列を使用する必要があるということですか? – Botski

0

では、「あなたはIdが自動インクリメントされた場合、あなただけ= 0のintイドを置くか、あなたはドン

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

を持つポストコントローラを作成します。それを提供する必要はありません。自分でIDを提供すると、重複して挿入されない可能性があります。 編集ビューに関しては、実際に正しいIDを更新できるように、IDを隠しておくことが重要です。 - あなたのmysqlテーブル構造 - 作成ビューでIdフィールドを削除 - 編集ビューで隠しIDフィールドを追加 - コントローラをチェックしてください。

+0

コントローラとビューでIDを削除しました。しかし、まだ... – Botski

+0

あなたのコントローラのintを見るCreatedBy = Convert.ToInt32(コレクション["Created By"]);私は "Created By"のようなスペースを使ってフォームコレクションの値をポストしているとは思わない...デバッグしよう何が起こるか見る。 – samvietnam

関連する問題