0

I have a problem with my Ilist I cant loop through it it always throw an error Object reference not set to an instance of an object.. Here is my view.. When I debug my code the Model has a value but when it goes to the foreach it says that item.pillarofcultureteamlevel is not set.. any help

@model P247.Pres.MVC.ViewModel.SummaryTeamLevelViewModel
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<html>
<head>
         <title></title>
</head>
<body>
<h2>Index</h2>
@{
var item = Model;

foreach (var pillar in item.pillarofcultureteamlevel)
{
    var js = pillar.JobSecurityAndOverallCompensation;
}
}
</body>
</html>

Here is my controller

public ActionResult Index()
    {
        _reportservice = new ReportService();
        _pillarofcultureteamlevel  = _reportservice.GetPillarsOfCultureTeamLevel(57);
        _retentiondriverteamlevel = _reportservice.GetRentionDriversTeamLevel(57);
        _employeeteamlevelsummarylist = _reportservice.GetEmployeeTeamLevelSummaryDTO(57);
        summary = new SummaryTeamLevelViewModel(_pillarofcultureteamlevel, _retentiondriverteamlevel, _employeeteamlevelsummarylist);
        return View(summary);
    }

Here is my viewmodel

public class SummaryTeamLevelViewModel
{

    private IList<PillarsOfCultureTeamLevelDTO> _pillarofcultureteamlevel;
    private IList<RetentionDriverTeamLevelDTO> _retentiondriverteamlevel;
    private IList<EmployeeTeamLevelSummaryDTO> _employeeteamlevelsummarylist;

    public SummaryTeamLevelViewModel(IList<PillarsOfCultureTeamLevelDTO> pillarofcultureteamlevel,
                                    IList<RetentionDriverTeamLevelDTO> retentiondriverteamlevel,
                                    IList<EmployeeTeamLevelSummaryDTO> employeeteamlevelsummarylist)
    {
        _pillarofcultureteamlevel = pillarofcultureteamlevel;
        _retentiondriverteamlevel = retentiondriverteamlevel;
        _employeeteamlevelsummarylist = employeeteamlevelsummarylist;
    }

    public IList<PillarsOfCultureTeamLevelDTO> pillarofcultureteamlevel { get; set; }

    public IList<RetentionDriverTeamLevelDTO> retentiondriverteamlevel { get; set; }

    public IList<EmployeeTeamLevelSummaryDTO> employeeteamlevelsummarylist { get; set; }

}
3
  • does your _pillarofcultureteamlevel variable has a value in your controller? Commented Jan 31, 2013 at 5:43
  • Yes it has a value in my controller... Commented Jan 31, 2013 at 5:54
  • Possible duplicate of What is a NullReferenceException, and how do I fix it? Commented Jan 11, 2017 at 10:26

1 Answer 1

1

Your problem is in your SummaryTeamLevelViewModel class. You have private fields to store your data, and that's where your values will be stored after you call your constructor as you do it in the controller. But your properties don't return or set your private fields, because you use the get; set; syntax instead of explicitly using your private fields.

You have 2 ways to solve your problem:

changing your properties so that they use your private fields like that:

public IList<PillarsOfCultureTeamLevelDTO> pillarofcultureteamlevel { get { return _pillarofcultureteamlevel; } set { _pillarofcultureteamlevel = value; } }

or changing your constructor and removing your private fields, so that you only use your properties, this would look like that:

public class SummaryTeamLevelViewModel
{
    public SummaryTeamLevelViewModel(IList<PillarsOfCultureTeamLevelDTO> pillarofcultureteamlevel,
                                    IList<RetentionDriverTeamLevelDTO> retentiondriverteamlevel,
                                    IList<EmployeeTeamLevelSummaryDTO> employeeteamlevelsummarylist)
    {
        this.pillarofcultureteamlevel = pillarofcultureteamlevel;
        this.retentiondriverteamlevel = retentiondriverteamlevel;
        this.employeeteamlevelsummarylist = employeeteamlevelsummarylist;
    }

    public IList<PillarsOfCultureTeamLevelDTO> pillarofcultureteamlevel { get; set; }

    public IList<RetentionDriverTeamLevelDTO> retentiondriverteamlevel { get; set; }

    public IList<EmployeeTeamLevelSummaryDTO> employeeteamlevelsummarylist { get; set; }

}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.