我是新手。我有一个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 ...行时我需要顽固对象。我一直在用下拉列表做这个,它工作得很好......我确定我错过了一些简单的东西,看不到它。
更新: 我知道我需要顽固对象,只是不确定在这种情况下如何做到这一点。
谢谢!
答案 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>()