2015-05-19 102 views
0

我有一個名爲「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

如果您最終將'model1'傳遞給視圖,那麼使用'model2'進行循環和計算有什麼意義? – 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