我有以下VM,Model和Method(在控制器中可以说)。调用Add()时,IDE会抛出“未设置为实例的对象”错误。模型中的属性被正确分配值但由于某种原因Add()炸弹...任何建议?
查看型号:
public class RevenueByViewModel
{
public ICollection<RevByModality> RevByModalities { get; set; }
}
型号:
public class RevByModality
{
public string DeliveryType { get; set; }
public decimal? ActualPrice { get; set; }
}
方法:
public RevenueByViewModel GetRevByModality(string bu, string region, string fiscalYearQuarter, string deliveryType)
{
RevByModality revByPublic = new RevByModality();
decimal? publicRev = 0.0m;
//...additional objects removed for brevity
var revByModality = (from r in db.Registrations
where (bu == "All" || r.BusinessUnit.Equals(bu)) &&
(region == "All" || r.Region.Equals(region)) &&
(r.FiscalYearQuarter == fiscalYearQuarter) &&
(deliveryType == "All" || r.DeliveryType.Equals(deliveryType))
select new
{
r.DeliveryType,
r.ActualPrice
}).ToList();
foreach(var item in revByModality)
{
if (item.DeliveryType.Equals("Public"))
{
publicRev += item.ActualPrice;
}
//...additional logic removed for brevity
}
RevenueByViewModel vm = new RevenueByViewModel();
revByPublic.DeliveryType = "Public";
revByPublic.ActualPrice = publicRev;
vm.RevByModalities.Add(revByPublic);
return vm;
}
答案 0 :(得分:1)
因为,在您的viewmodel
中,您没有为要添加到{/ p>的.Add
生成集合
您可以在流程中添加它,也可以直接将其添加到viewmodel:
RevenueByViewModel vm = new RevenueByViewModel();
vm.RevByModalities = new List<RevByModality>();
或
public class RevenueByViewModel
{
public RevenueByViewModel()
{
RevByModalities = new List<RevByModality>();
}
public ICollection<RevByModality> RevByModalities { get; set; }
}