2014-10-29 79 views
0

正試圖使用​​表單向數據庫添加一些數據。將數據添加到使用MVC的數據庫4

我已經有了很少的數據,並設法得到編輯工作,但增加了有問題的技巧。

這是我的編輯代碼在數據庫中的數據進行編輯:

[HttpPost] 
    public ActionResult Save(M2Portal.Areas.Admin.Models.Users.Roles roleForm) 
     { 
      try 
     { 
      if (ModelState.IsValid) 
      { 
       if (Mode == "Add") 
       { 

        ****This is where my add code goes******* 
       } 
       else 
       { 
        var role = Srvctx.Roles.FirstOrDefault(w => w.RoleID == roleForm.RoleId); 
        role.RoleName = roleForm.RoleName; 
        role.RoleDescription = roleForm.RoleDescription; 
        Srvctx.SubmitChanges(); 
       } 

       return RedirectToAction("RoleManagement"); 
      } 

      return RedirectToAction("RoleManagement"); 
     } 
     catch (Exception e) 
     { 
      return RedirectToAction("RoleManagement"); 
     } 

}

這是模型代碼:

這是爲補充。

public Roles() 
    { 
     Mode = "Add"; 
     RoleId = 0; 
     RoleDescription = ""; 
     RoleName = ""; 
     CustomerBlacklist = new List<vw_RoleCustomerBlacklist>(); 
    } 

這是用於編輯:哪些工作。

public Roles(int roleId) 
    { 
     Mode = "Edit"; 
     //RoleId = roleId; 
     RoleId = roleId; 
     RoleName = _m2Sctx.Roles.Where(s => s.RoleID == RoleId).Select(c => c.RoleName).FirstOrDefault(); 
     RoleDescription = _m2Sctx.Roles.Where(s => s.RoleID == RoleId).Select(c => c.RoleDescription).FirstOrDefault(); 
     CustomerBlacklist = _m2Sctx.vw_RoleCustomerBlacklists.Where(s => s.RoleId == roleId).ToList(); 
     CustName = CustName; 


    } 

所以現在我正在使用添加功能,這是有問題。

到表單中添加新數據...任何想法:

if (Mode == "Add") 
       { 

        ****This is where my add code goes******* 
       } 

你可以看到我的編輯是如何設置的,但對於添加其完全不同的,有我在哪裏罰款難...

+0

不要添加'Mode'屬性,只需檢查'Id'屬性的值即可。如果它的零,那麼它的新和應該被添加,否則它的存在。而不要在你的構造函數中使用所有那些數據庫邏輯。所有你需要的是'Role role = _m2Sctx.Roles.Where(s => s.RoleID == someValue);返回查看(角色);' – 2014-10-30 01:24:06

回答

1

嘗試婁代碼:

if (ModelState.IsValid) 
     { 
      if (roleForm.RoleId == 0) 
      { 

       var role = new Role() 
       { 
        RoleName = roleForm.RoleName, 
        RoleDescription = roleForm.RoleDescription 
       }; 



Srvctx.Roles.InsertOnSubmit(role); 
      Srvctx.SubmitChanges(); 
      } 
      else 
      { 
       var role = Srvctx.Roles.FirstOrDefault(w => w.RoleID == roleForm.RoleId); 
       role.RoleName = roleForm.RoleName; 
       role.RoleDescription = roleForm.RoleDescription; 
       Srvctx.SubmitChanges(); 
      } 

      return RedirectToAction("RoleManagement"); 
     } 
+0

它增加了一個錯誤:'System.Data.Linq.Table '沒有包含'Add'的定義,也沒有擴展方法'Add'接受'System'類型的第一個參數。可以找到Data.Linq.Table '(你是否缺少使用指令或程序集引用?) – 2014-10-30 09:09:04

+0

已使用代碼,使用InsertOnSubmit而不是Add。 – 2014-10-30 09:15:30

+0

感謝您的幫助,多數民衆贊成在工作 – 2014-10-30 10:40:42

0
var newRole = new Role { 
    RoleName = roleForm.RoleName, 
    RoleDescription = roleForm.RoleDescription 
}; 

Srvctx.Roles.InsertOnSubmit(newRole); 

假設您的「角色」實體類被稱爲Role。此外,如果您的「角色」類中包含CustomerBlacklist,也可以填充CustomerBlacklist。

+0

它給了我一個廣告錯誤:錯誤'System.Data.Linq.Table '沒有包含'Add'的定義,也沒有擴展方法'添加'接受類型'System.Data.Linq.Table '的第一個參數可能被發現(你是否缺少使用指令或程序集引用?) – 2014-10-30 09:01:42

+0

對不起,我給了你代碼EF 。從你的錯誤,我假設你使用Linq到Sql?如果是這樣,我更新了答案。 – GvM 2014-10-30 14:43:26

0

爲編輯模式,而不是

public Roles(int roleId) 
    { 
     Mode = "Edit"; 
     //RoleId = roleId; 
     RoleId = roleId; 
     RoleName = _m2Sctx.Roles.Where(s => s.RoleID == RoleId).Select(c => c.RoleName).FirstOrDefault(); 
     RoleDescription = _m2Sctx.Roles.Where(s => s.RoleID == RoleId).Select(c => c.RoleDescription).FirstOrDefault(); 
     CustomerBlacklist = _m2Sctx.vw_RoleCustomerBlacklists.Where(s => s.RoleId == roleId).ToList(); 
     CustName = CustName; 


    } 

創建一個方法,返回基於角色ID角色的單個對象:

public M2Portal.Areas.Admin.Models.Users.Roles Roles(int roleId) 
     { 
      var roleDBEntity = _m2Sctx.Roles.FirstOrDefault(s => s.RoleID == RoleId); 

    var roleModelEntity = new M2Portal.Areas.Admin.Models.Users.Roles(){ 
     RoleId = roleDBEntity.RoleId, 
     RoleName = roleDBEntity.RoleName, 
     RoleDescription = roleDBEntity.RoleDescriptio 
     CustomerBlacklist = roleDBENtity.CustomerBlacklist // Assuming there's relation between Role and CustomerBlackList table 
}; 
    return roleModelEntity; 
     }