2015-05-19 2 views
0

У меня есть viewmodel под названием «PlanObjectsViewModel». Мне нужно добавить результаты внутри моего цикла while в экземпляр объекта PlanObjectsViewModel. Я пробовал следующий подход. Это неправильно? Я получаю вызванное исключение;как просмотреть viewmodel для просмотра

Модели элемент передается в словарь типа 'MvcApp.ViewModel.PlanObjectsViewModel', но этот словарь требует модель элемента типа «System.Collections.Generic.IEnumerable`1 [MvcApp.ViewModel.PlanObjectsViewModel]».

var model2 = model1.GroupBy(t => t.Type).Select(g => new PlanBaseTypedObjects 
{ 
    Id = g.Key, 
    ObjectDetails = g 
}); 

int Type1 = 0; 
int Type2 = 0;   

double? temp = 0; 

foreach (var item in model2) 
{ 
    if(item.Id==1) 
     Type1 = item.ObjectDetails.Count(); 

    if (item.Id == 2) 
     Type2 = item.ObjectDetails.Count(); 
} 

Random rand = new Random(); 

var final = new PlanObjectsViewModel(); // want to add data to this view model 

while (budget > temp) 
{ 
    if (Type1 != 0) { 
     int randi = rand.Next(0, Type1); 

     foreach (var item in model2) 
     { 
      if (item.Id == 1) { foreach (var x in item.ObjectDetails) { 
       if (x.Id == randi) 
        final.Id = x.Id;// i don't know,whether this is a correct way to 
            //add data row to the model 
       temp=temp+x.Price; 
      } 
      } 
     } 
    } 

    if (Type2 != 0) 
    { 
     int randi = rand.Next(0, Type2); 

     foreach (var item in model2) 
     { 
      if (item.Id == 2) 
      { 
       foreach (var x in item.ObjectDetails) 
       { 
        if (x.Id == randi) 
         final.Id = x.Id; 
        temp = temp + x.Price; 
       } 
      } 
     } 
    } 
} 
return View(model1); 

На мой взгляд, у меня есть;

@model IEnumerable<MvcApp.ViewModel.PlanObjectsViewModel> 

может кто-нибудь объяснить, почему это так? если я делаю это неправильно, то какой лучший подход? Спасибо.

+3

Какой тип model1? Ошибка говорит, что это одно значение, а не перечислимое. –

+1

Какой смысл делать цикл и вычисления с помощью 'model2', если вы передадите' model1' в представление в конце? – ekad

+0

Извините! final - это тот, который должен перейти к view..not model1 –

ответ

0

Вы ожидаете коллекцию, но вместо этого вы передаете отдельный элемент в представление.

MvcApp.ViewModel.PlanObjectsViewModel = объект System.Collections.Generic.IEnumerable[MvcApp.ViewModel.PlanObjectsViewModel] = совокупность объектов

Изменить этот

@model IEnumerable<MvcApp.ViewModel.PlanObjectsViewModel>

в

@model MvcApp.ViewModel.PlanObjectsViewModel

Смежные вопросы