0

以下のリストをビューモデルに追加するにはどうすればよいPosttypeMetasですか?

      static void Main(string[] args)
      {
        List<PosttypeMetas> a = new List<PosttypeMetas>();
        a.Add(new PosttypeMetas { Metatexts = "1", Selects = "mazhar" });
        a.Add(new PosttypeMetas { Metatexts = "2", Selects = "mazhar1" });
        a.Add(new PosttypeMetas { Metatexts = "3", Selects = "mazhar2" });
        a.Add(new PosttypeMetas { Metatexts = "4", Selects = "mazhar3" });
        a.Add(new PosttypeMetas { Metatexts = "5", Selects = "mazhar4" });

        PosttypeVM abc = new PosttypeVM();


        foreach (var listf in a)
        {
            PosttypeMetas abcc = new PosttypeMetas();
            abcc.Metatexts = listf.Metatexts;
            abcc.Selects = listf.Selects;

            abc.posttypemeta.Add(abcc); // NullReferenceException

        }
        Console.Read();         
    }    

public class PosttypeVM
{
    public string module { get; set; }
    public string IsModule { get; set; }
    public string parent { get; set; }    
    public string OrgorSys { get; set; }
    public string ModuleName { get; set; }
    public List<PosttypeMetas> posttypemeta { get; set; }
}

public class PosttypeMetas
{       
    public string Metatexts { get; set; }
    public string Selects { get; set; }
}
4

2 に答える 2

2

問題は、リストが参照型であり、現在何も参照していないことです。

追加する前に、リストを作成する必要があります。コンストラクターでこれを行う必要があります。

public PosttypeVM()
{
    posttypemeta = new List<PosttypeMetas>();
}
于 2012-12-13T09:53:56.977 に答える
1

aはすでにループをList<PosttypeMetas>必要としないため、次のforeachように割り当てるだけです。

static void Main(string[] args)
      {
        List<PosttypeMetas> a = new List<PosttypeMetas>();
        a.Add(new PosttypeMetas { Metatexts = "1", Selects = "mazhar" });
        a.Add(new PosttypeMetas { Metatexts = "2", Selects = "mazhar1" });
        a.Add(new PosttypeMetas { Metatexts = "3", Selects = "mazhar2" });
        a.Add(new PosttypeMetas { Metatexts = "4", Selects = "mazhar3" });
        a.Add(new PosttypeMetas { Metatexts = "5", Selects = "mazhar4" });

        PosttypeVM abc = new PosttypeVM();
        abc.posttypemeta= a; //assign a to the viewmodel   

        Console.Read();         

    }    

編集:リストをインスタンス化する必要があります:

public class PosttypeVM
{


    public string module { get; set; }
    public string IsModule { get; set; }
    public string parent { get; set; }    
    public string OrgorSys { get; set; }
    public string ModuleName { get; set; }
    public List<PosttypeMetas> posttypemeta { get; set; }

    public PosttypeVM(){
     posttypemeta = new List<PosttypeMetas>(); //create the list 
      }
}
于 2012-12-13T09:54:18.563 に答える