2013-11-26 3 views
0

В моем контроллере я добавил код для выполнения и получения двух хранимых процедур:Как передать два результата хранимой процедуры в один вид MVC?

public ActionResult Index() 
    { 
     ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application."; 

     var megaMean = _db.GetMegaMillionsMean(); 
     var powerMean = _db.GetPowerballMean(); 
     //object mega = null; 
     List<mega> viewMega = megaMean.Select(p => new mega {ball1 = p.Ball_1_Average, ball2 = p.Ball_2_Average, ball3 = p.Ball_3_Average, ball4 = p.Ball_4_Average, ball5 = p.Ball_5_Average, megaball = p.MegaBall_Average}).ToList(); 
     List<power> viewPower = powerMean.Select(p => new power { ball1 = p.Ball_1_Average, ball2 = p.Ball_2_Average, ball3 = p.Ball_3_Average, ball4 = p.Ball_4_Average, ball5 = p.Ball_5_Average, powerball = p.Powerball_Average }).ToList(); 


     return View(viewMega); 
    } 

В настоящее время я только в состоянии передать один набор тех результатов, на мой взгляд:

@{ 
    foreach (var item in Model) 
    { 

     <tr> 
      <td> 
       @item.ball1 
      </td> 
      <td> 
       @item.ball2 
      </td> 
      <td> 
       @item.ball3 
      </td> 
      <td> 
       @item.ball4 
      </td> 
      <td> 
       @item.ball5 
      </td> 
      <td> 
       @item.megaball 
      </td> 
     </tr> 

Есть ли прочь, что я могу передать оба этих результата хранимой процедуры на один вид? Или, по крайней мере, так или иначе, что я могу достичь этого по-другому? Благодаря!

+1

вам нужна модель представления для этого http://stackoverflow.com/questions/11064316/what-is-viewmodel- in-mvc –

ответ

3

Создать ViewModel ...

public class PowerMega 
{ 
    public List<mega> Megas {get;set;} 
    public List<power> Powers {get;set;} 
} 

Вы можете создать свой ViewModel ..

var megaMean = _db.GetMegaMillionsMean(); 
var powerMean = _db.GetPowerballMean(); 
var vm = new PowerMega(); 
vm.Megas = megaMean.Select(p => new mega {ball1 = p.Ball_1_Average, ball2 = p.Ball_2_Average, ball3 = p.Ball_3_Average, ball4 = p.Ball_4_Average, ball5 = p.Ball_5_Average, megaball = p.MegaBall_Average}).ToList(); 
vm.Powers = powerMean.Select(p => new power { ball1 = p.Ball_1_Average, ball2 = p.Ball_2_Average, ball3 = p.Ball_3_Average, ball4 = p.Ball_4_Average, ball5 = p.Ball_5_Average, powerball = p.Powerball_Average }).ToList(); 


return View(vm); 

Ваш View тогда должны были бы быть типа, как это ...

@model namespace.PowerMega 
+0

Спасибо! Я забыл о ViewModels! – aqwright31

0

Вы можете пройти через ViewBag и получить доступ к элементам ViewBag в представлении

var megaMean = _db.GetMegaMillionsMean(); 
var powerMean = _db.GetPowerballMean(); 
//object mega = null; 
List<mega> viewMega = megaMean.Select(p => new mega {ball1 = p.Ball_1_Average, ball2 = p.Ball_2_Average, ball3 = p.Ball_3_Average, ball4 = p.Ball_4_Average, ball5 = p.Ball_5_Average, megaball = p.MegaBall_Average}).ToList(); 
List<power> viewPower = powerMean.Select(p => new power { ball1 = p.Ball_1_Average, ball2 = p.Ball_2_Average, ball3 = p.Ball_3_Average, ball4 = p.Ball_4_Average, ball5 = p.Ball_5_Average, powerball = p.Powerball_Average }).ToList(); 

ViewBag.MegaList = viewMega; 
ViewBag.PowerList = viewPower; 

Или создать ViewModel и передать его для просмотра, как указано в предыдущем ответе

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