对象未设置为实例... stumper

时间:2015-10-28 01:00:58

标签: asp.net-mvc

我有以下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;

    }

1 个答案:

答案 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; }
}