2013-08-02 4 views
0

Я пытаюсь вернуть список из моей модели просмотра, который содержит список полных имен сотрудников. Однако значения возвращаются как null, и я не могу понять, почему. Я также приветствую эту прекрасную ошибку:Значения Возврат как null из модели просмотра?

Ссылка на объект не установлена ​​в экземпляр объекта.

Ошибка специфически показывает мой цикл по каждому элементу в моих AllEmployees() метод как являющийся проблемой

Вот мое лицо:

namespace ROIT.Entities 
{ 
public class Employee : Entity<Employee> 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    [NotMapped] 
    public string FullName { 
     get { return FirstName + " " + LastName; } 
    } 
} 
} 

Вот мой вид модели:

namespace ROIT.Web.Models 
{ 
    public class ContractPageViewModel 
{ 
    public ICollection<Contract> Contracts { get; set; } 
    public Contract Contract { get; set; } 
    public ICollection<Roi> Rois { get; set; } 
    public ICollection<Employee> Employees { get; set; } 
    public ICollection<ContractResource> ContractResources { get; set; } 
    public ICollection<LaborCategory> LaborCategories{ get; set; } 
    public List<string> AllEmployeesList { get; set; } 

    public void AllEmployees() 
    { 
     AllEmployeesList = new List<string>(); 
     foreach (Employee item in Employees) 
     { 
      AllEmployeesList.Add(item.FirstName); 
     } 
    } 

} 
} 

И heres возвращение в моем контролере:

public ActionResult testview() 
    { 
     var model = new ContractPageViewModel(); 
     model.Contracts = db.Contracts.Include(c => c.Business).Include(c => c.Customer).ToList(); 
     model.AllEmployees(); 

     return View(model); 
    } 

Сообщите мне, если вам нужно больше разъяснений.

Заранее спасибо

+0

Вы получаете эту ошибку, потому что 'значение ContractPageViewModel.Employees' никогда ничем не установлен. – Jay

+0

@Ger Привет друг, добро пожаловать в StackOverflow! Посетите страницу '/ about', чтобы узнать, как работает сеть. Не забудьте перечесть ответы, которые заслуживают этого, и отметить правильный ответ, который решил вашу проблему. Вам рекомендуется делать то же самое по другим вопросам. –

ответ

1

Ваш Employees переменная:

public ICollection<Employee> Employees { get; set; } 

... это не экземпляр, прежде чем пытаться петли через него. Более ясно, объявив его как свойство, не устанавливает экземпляр Employees, равный чему-либо; поэтому, если вы не устанавливаете его в другом месте (не показано выше), он будет null при попытке получить к нему доступ.

0

Вы должны назначить список Employees так же, как и вы, Contract. Когда вы вызываете метод AllEmployees, этот объект по-прежнему null.

Side Примечание: Вы можете переписать свое имущество на что-то вроде:

public ICollection<Employee> Employees { get; set; } 
public List<string> AllEmployeesList 
{ 
    get 
    { 
     return this.Employees.Select<Employee, string>(x => x.FirstName).ToList(); 
    } 
    private set; 
} 
Смежные вопросы