C# 调用将模型列表作为web表单参数的web服务

C# 调用将模型列表作为web表单参数的web服务,c#,C#,我的服务看起来像这样 [WebMethod] public bool insertRecord(List<People> stu) { using (LearnershipDBEntities dn = new LearnershipDBEntities()) { Person obj = new Person(); foreach (var item in stu)

我的服务看起来像这样

    [WebMethod]
    public bool insertRecord(List<People> stu)
    {
        using (LearnershipDBEntities dn = new LearnershipDBEntities())
        {
            Person obj = new Person();

            foreach (var item in stu)
            {
                obj.personID = item.personId;
                obj.dateOfBirth = item.dob;
                obj.idNumber = item.idNumber;
                obj.name = item.name;
                obj.title = item.title;
            }

            dn.People.Add(obj);
            dn.SaveChanges();

        }

        return true;
    }
[WebMethod]
公共布尔插入记录(列表stu)
{
使用(LearnershipDBEntities dn=new LearnershipDBEntities())
{
人员对象=新人员();
foreach(stu中的var项目)
{
obj.personID=item.personID;
obj.dateOfBirth=item.dob;
obj.idNumber=item.idNumber;
obj.name=item.name;
obj.title=item.title;
}
dn.People.Add(obj);
dn.SaveChanges();
}
返回true;
}
我的表格有这个代码

private void button2_Click(object sender, EventArgs e)
    {
        try
        {
            ToDbXml.Service2 nb = new ToDbXml.Service2();
           Service2Client s = new Service2Client();

            People dto = new People();

            for (int i = 0; i <= 4; i++)
            {                   
                dto.name = string.IsNullOrEmpty(dataGridView1.Rows[i].Cells[0].Value.ToString()) ? string.Empty : dataGridView1.Rows[i].Cells[0].Value.ToString();
                dto.dob = string.IsNullOrEmpty(dataGridView1.Rows[i].Cells[1].Value.ToString()) ? (DateTime)System.Data.SqlTypes.SqlDateTime.Null : DateTime.Parse(dataGridView1.Rows[i].Cells[1].Value.ToString());
                dto.title = string.IsNullOrEmpty(dataGridView1.Rows[i].Cells[2].Value.ToString()) ? string.Empty : dataGridView1.Rows[i].Cells[2].Value.ToString();
                dto.idNumber = string.IsNullOrEmpty(dataGridView1.Rows[i].Cells[3].Value.ToString()) ? string.Empty : dataGridView1.Rows[i].Cells[3].Value.ToString();                                     
            }

            s.insertRecord(dto); 


            MessageBox.Show("Values Inserted Succesfully");
        }
        catch (SqlException ex)
        {
            MessageBox.Show( ex.Message);
        }

    }
private void按钮2\u单击(对象发送者,事件参数e)
{
尝试
{
ToDbXml.Service2 nb=新的ToDbXml.Service2();
Service2Client s=新的Service2Client();
人物dto=新人();

对于(int i=0;i您需要构建一个人员列表并将其传递给webservice方法。因此,我建议您修改web服务的源代码,如下所示:

[WebMethod]
public bool insertRecord(List<People> stu)
{
    using (LearnershipDBEntities dn = new LearnershipDBEntities())
    {
        Person obj = new Person();

        foreach (var item in stu)
        {
            obj.personID = item.personId;
            obj.dateOfBirth = item.dob;
            obj.idNumber = item.idNumber;
            obj.name = item.name;
            obj.title = item.title;
            dn.People.Add(obj);
        }

        dn.SaveChanges();

    }

    return true;
}
private void button2_Click(object sender, EventArgs e)
{
    try
    {
        ToDbXml.Service2 nb = new ToDbXml.Service2();
        Service2Client s = new Service2Client();
        List<People> listOfPeople = new List<People>();

        for (int i = 0; i <= 4; i++)
        {    
            listOfPeople.add (
            new People() 
            {

            name = string.IsNullOrEmpty(dataGridView1.Rows[i].Cells[0].Value.ToString()) ? string.Empty : dataGridView1.Rows[i].Cells[0].Value.ToString(),
            dob = string.IsNullOrEmpty(dataGridView1.Rows[i].Cells[1].Value.ToString()) ? (DateTime)System.Data.SqlTypes.SqlDateTime.Null : DateTime.Parse(dataGridView1.Rows[i].Cells[1].Value.ToString()),
            title = string.IsNullOrEmpty(dataGridView1.Rows[i].Cells[2].Value.ToString()) ? string.Empty : dataGridView1.Rows[i].Cells[2].Value.ToString(),
            idNumber = string.IsNullOrEmpty(dataGridView1.Rows[i].Cells[3].Value.ToString()) ? string.Empty : dataGridView1.Rows[i].Cells[3].Value.ToString()
          });

        }
        s.insertRecord(listOfPeople); 
        MessageBox.Show("Values Inserted Succesfully");
    }
    catch (SqlException ex)
    {
        MessageBox.Show( ex.Message);
    }
}
[WebMethod]
公共布尔插入记录(列表stu)
{
使用(LearnershipDBEntities dn=new LearnershipDBEntities())
{
人员对象=新人员();
foreach(stu中的var项目)
{
obj.personID=item.personID;
obj.dateOfBirth=item.dob;
obj.idNumber=item.idNumber;
obj.name=item.name;
obj.title=item.title;
dn.People.Add(obj);
}
dn.SaveChanges();
}
返回true;
}
事件按钮处理程序如下所示:

[WebMethod]
public bool insertRecord(List<People> stu)
{
    using (LearnershipDBEntities dn = new LearnershipDBEntities())
    {
        Person obj = new Person();

        foreach (var item in stu)
        {
            obj.personID = item.personId;
            obj.dateOfBirth = item.dob;
            obj.idNumber = item.idNumber;
            obj.name = item.name;
            obj.title = item.title;
            dn.People.Add(obj);
        }

        dn.SaveChanges();

    }

    return true;
}
private void button2_Click(object sender, EventArgs e)
{
    try
    {
        ToDbXml.Service2 nb = new ToDbXml.Service2();
        Service2Client s = new Service2Client();
        List<People> listOfPeople = new List<People>();

        for (int i = 0; i <= 4; i++)
        {    
            listOfPeople.add (
            new People() 
            {

            name = string.IsNullOrEmpty(dataGridView1.Rows[i].Cells[0].Value.ToString()) ? string.Empty : dataGridView1.Rows[i].Cells[0].Value.ToString(),
            dob = string.IsNullOrEmpty(dataGridView1.Rows[i].Cells[1].Value.ToString()) ? (DateTime)System.Data.SqlTypes.SqlDateTime.Null : DateTime.Parse(dataGridView1.Rows[i].Cells[1].Value.ToString()),
            title = string.IsNullOrEmpty(dataGridView1.Rows[i].Cells[2].Value.ToString()) ? string.Empty : dataGridView1.Rows[i].Cells[2].Value.ToString(),
            idNumber = string.IsNullOrEmpty(dataGridView1.Rows[i].Cells[3].Value.ToString()) ? string.Empty : dataGridView1.Rows[i].Cells[3].Value.ToString()
          });

        }
        s.insertRecord(listOfPeople); 
        MessageBox.Show("Values Inserted Succesfully");
    }
    catch (SqlException ex)
    {
        MessageBox.Show( ex.Message);
    }
}
private void按钮2\u单击(对象发送者,事件参数e)
{
尝试
{
ToDbXml.Service2 nb=新的ToDbXml.Service2();
Service2Client s=新的Service2Client();
List listOfPeople=新列表();

对于(int i=0;i),错误消息清楚地表明您必须传递数组/人员列表,并且add语句应该位于
insertRecord
function中的foreach循环中。谢谢,让我试试。您很高兴。如果我的答案对您有帮助,请将其标记为正确答案。谢谢!