绑定嵌套列表

时间:2016-08-10 10:11:18

标签: c#

我正在尝试绑定以下内容

namespace Webservice_Test.MOdel
{
    public class TestModelcs
    {

        public int ID { get; set; }
        public string FirstName { get; set; }
        public List<Address> Address { get; set; }
    }

    public class Address
    {
        public string Street { get; set; }
        public string City { get; set; }
    }
}

这是我的代码,但是当它到达

时我一直收到错误
List<TestModelcs> cp = new List<TestModelcs>();
TestModelcs tm = new TestModelcs();
tm.FirstName = "fm";
tm.ID = 1;
tm.Address[1].Street = "st1";
tm.Address[1].City = "city1";
cp.Add(tm);   

我得到的错误是

  

类型&#39; System.NullReferenceException&#39;的例外情况发生在Webservice Test.dll中但未在用户代码中处理

     

附加信息:未将对象引用设置为对象的实例。

3 个答案:

答案 0 :(得分:3)

在代码中将TestModelcs类更改为

public class TestModelcs
{
     public TestModelcs()
     {
        this.Address = new List<Address>();
     }

    public int ID { get; set; }
    public string FirstName { get; set; }
    public List<Address> Address { get; set; }
}

您需要在容器类的构造函数内初始化列表对象,以创建列表的对象。否则将发生空引用异常。

C#6.0中用于初始化地址列表的替代方法

public class TestModelcs
{
    public int ID { get; set; }
    public string FirstName { get; set; }
    public List<Address> Address { get; set; } = new List<Address>();
}

答案 1 :(得分:1)

使用以下内容更改您的代码:

List<TestModelcs> cp = new List<TestModelcs>();
TestModelcs tm = new TestModelcs();
tm.FirstName = "fm";
tm.ID = 1;
tm.Address=new List<Address>();
tm.Address.Add(new Address())
tm.Address[0].Street = "st1";
tm.Address[0].City = "city1";
cp.Add(tm);

答案 2 :(得分:0)

您需要在某处初始化列表,例如在构造函数中。

public class TestModelcs
{
    public int ID { get; set; }
    public string FirstName { get; set; }
    public List<Address> Address { get; set; }

    public TestModelcs()
    {
        Address = new List<Address>();
    }
}