填充列表<>不是选择列表

时间:2018-02-16 16:26:28

标签: c# core

我是新手。我有一个MVC Core 2.0项目,我需要在模型中填充一个列表并将该模型返回到页面。我的模型看起来像这样:

public class PageModel
     public string Title {get; set;}
     public List<ChartGroups> Chart { get; set; }    

}

public class ChartGroups
{
    public string Freq { get; set; }    
    public string Head { get; set; }
}

为了填充这个,我得到了以下内容:

public PageModel GetChart(){
 PageModel R = new PageModel(); 

 R.Title = "Some Title";
 R.Chart.Add(New ChartGroups {Freq ="Test", Head="Test2"});
 R.Chart.Add(New ChartGroups {Freq ="Test3", Head="Test4"});
 return(R);
}

问题是我得到一个错误,说当我到达R.Chart.Add ...行时我需要顽固对象。我一直在用下拉列表做这个,它工作得很好......我确定我错过了一些简单的东西,看不到它。

更新: 我知道我需要顽固对象,只是不确定在这种情况下如何做到这一点。

谢谢!

3 个答案:

答案 0 :(得分:2)

您需要先创建GetChart()的实例,然后才能开始向其中添加项目。您可以使用public PageModel GetChart() { PageModel R = new PageModel(); R.Title = "Some Title"; R.Chart = new List<ChartGroups>(); //< --- R.Chart.Add(New ChartGroups { Freq = "Test", Head = "Test2"}); R.Chart.Add(New ChartGroups { Freq = "Test3", Head = "Test4"}); return R; } 方法执行此操作:

PageModel

或在public class PageModel { public string Title { get; set; } public List<ChartGroups> Chart { get; set; } = new List<ChartGroups>(); } 班级中:

public class Foo
{
  public Foo (){_state =  new Draft(this);}

  // this and a whole bunch of other properties have higher validation requirements 
  // when not just a draft
  public string Name {get; set;} 
  public DateTime? SomeDate{get; set;} 
  // ... more properties

  private CustomState _state;
  public CustomState State {get{return _state;}}
  public void StopBeingADraft(){ CustomState.StopBeingADraft(); }
}

答案 1 :(得分:0)

您需要初始化列表。例如,在您的PageModel构造函数中,您可以执行以下操作:

public class PageModel  
{
    public PageModel()
    {
        Chart = new List<ChartGroups>();
    }

    public string Title {get; set;}
    public List<ChartGroups> Chart { get; set; } 
}

告诉你,你可能不需要{set;因为你现在正在构造函数中初始化属性,所以你可以把它作为

的部分Chart属性
 public List<ChartGroups> Chart { get; } 

然后,如果您愿意,您也可以使用

语法
 public List<ChartGroups> Chart { get; } = new List<ChartGroups>(); 

这将允许您将初始化移出构造函数。

答案 2 :(得分:-1)

您的列表为空。所以将它设置为一个实例:

public List<ChartGroups> Chart { get; set; } = new List<ChartGroups>()