2015-05-16 3 views
0

Модель:Почему мой MVC ViewModel пуст?

public class Service 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public double Price { get; set; } 
} 

ViewModel:

public class FullPrice 
{ 
    public IEnumerable<Service> Services { get; set; } 
} 

Вид:

@model hotel.Models.FullPrice 
@foreach(Service service in Model.Services) 
{ 
    // 
} 

мой взгляд модель NULL. Зачем?

+0

Что ваш контроллер код делает ? – ToddB

+0

Перед переходом к представлению вы должны инициализировать его в действии контроллера. Показать код действия. – Zabavsky

+0

FullPrice model = new FullPrice(); return View (модель); это мое действие – andrey1567

ответ

2

Модель будет NULL, потому что в настоящее время не существует экземпляра экземпляра при выполнении представления.

Обычно способ передать экземпляр модели в представление будет в соответствующем методе действия как

public View myActionMethod() 
{ 
    hotel.Models.FullPrice model = new hotel.Models.FullPrice(); 
    model.Services = new List<Service>();//Also prevent NULL exception with this property 
    return View(model); 
} 
1

Я предполагаю, что это не модель, что имеет нулевое значение, но Services. Измените код действия на

FullPrice model = new FullPrice 
{ 
    Services = new List<Service>() 
}; 
return View(model); 
+0

, это мне нужно! Спасибо ((У меня много проблем для этого ( – andrey1567

0

Изменить код ViewModel, чтобы ниже

public class FullPrice 
{ 
    public FullPrice() 
    { 
     this.Services = new List<Service>(); 
    } 

    public IEnumerable<Service> Services { get; set; } 
} 

поэтому Services свойство не будет аннулирована, если вы сделаете это

FullPrice model = new FullPrice();