2017-10-17 103 views
0

我正在使用MVC4 C#Razor視圖和MS SQL Server。我需要從控制器插入一個列表/數組值到sql server。我將視圖中的值傳遞給控制器​​並獲取控制器中的值。MVC 4 - 從控制器插入列表/數組到SQL Server

我的數據結構 -

{sid: "101", m1Qty: "1", m2Qty: "3", m3Qty: ""} 
{sid: "102", m1Qty: "5", m2Qty: "6", m3Qty: ""} 
{sid: "103", m1Qty: "8", m2Qty: "0", m3Qty: ""} 

插入我的表(tbl_monthqty)在下面的順序需要上述數據。 ID自動生成的 -

ID SID  MonthID mQty 
1 101  1  1 
2 102  1  5 
3 103  1  8 
4 101  2  3 
5 102  2  6 

如果任何值null0,需要忽略

MonthID是例如 - m1Qty = 1, m2Qty = 2, m3Qty = 3

我的控制器(C#)是 -

[HttpPost] 
public JsonResult SaveQty(IList<AllQty> model) 
{ 
    var list = new [] { model }; 
    var count = list.Count(); 

    DataTable dt = new DataTable(); 
    dt.Columns.Add("SID"); 
    dt.Columns.Add("MonthID"); 
    dt.Columns.Add("mQty"); 

    for(int i=0; i<count; i++) 
    { 
     //dt.Rows.Add(); 
     // Not sure what I will do here 
    } 

    return Json(new { success = true }); 
} 

我班級是 -

public class AllQty 
{ 
    public int SID { get; set; } 
    public int MonthID { get; set; } 
    public int mQty { get; set; } 
} 

我得到控制器中的列表值,但不知道如何將這些列表/數組值插入到我的表中。我已經嘗試了幾個問題如this,但沒有奏效。

+0

可能的重複[如何填充數據表與列表](https://stackoverflow.com/questions/19076034/) – adiga

+2

可能的重複[如何填充數據表與列表](https://stackoverflow.com/questions/19076034/how-to-fill-a-datatable-with-listt) –

+0

@adiga,我的數據結構與上述問題不同 – Arif

回答

2

首先創建表示JSON數據結構的數據模型:

public class AllQty 
    { 
    public int SID { get; set; } 
    public int MonthID { get; set; } 
    public int mQty { get; set; } 
    } 

然後將JSON轉換成FirstModel對象名單(I:

public class FirstModel 
    { 
    public int SID; 
    public string m1Qty; 
    public string m2Qty; 
    public string m3Qty; 
    } 

然後要存儲數據的數據模型假設你已經這樣做了),最後將列表中的數據轉換爲列表:

 List<FirstModel> qtYs = new List<FirstModel>(); 
     List<AllQty> allQties = new List<AllQty>(); 
     foreach (FirstModel item in qtYs) 
     { 
      if (string.IsNullOrEmpty(item.m1Qty)) 
      { 
       AllQty allQty = new AllQty 
       { 
        MonthID = 1, 
        mQty = int.Parse(item.m1Qty), 
        SID = item.SID 
       }; 
       allQties.Add(allQty); 
      } 

      if (string.IsNullOrEmpty(item.m2Qty)) 
      { 
       AllQty allQty = new AllQty 
       { 
        MonthID = 2, 
        mQty = int.Parse(item.m1Qty), 
        SID = item.SID 
       }; 
       allQties.Add(allQty); 
      } 

      if (string.IsNullOrEmpty(item.m3Qty)) 
      { 
       AllQty allQty = new AllQty 
       { 
        MonthID = 3, 
        mQty = int.Parse(item.m1Qty), 
        SID = item.SID 
       }; 
       allQties.Add(allQty); 
      } 
     } 

     DataTable dt = new DataTable(); 
     dt.Columns.Add("SID"); 
     dt.Columns.Add("MonthID"); 
     dt.Columns.Add("mQty"); 

     foreach (AllQty allQty in allQties) 
     { 
      var row = dt.NewRow(); 

      row["SID"] = allQty.SID; 
      row["MonthID"] = allQty.MonthID; 
      row["mQty"] = allQty.mQty; 

      dt.Rows.Add(row); 
     } 
+1

很多人非常感謝雅利安,它的幫助很大 – Arif