2017-10-17 92 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