Получение ошибки при передаче нескольких результатов для просмотра в asp.net MVC5 - PullRequest
0 голосов
/ 08 мая 2018

Я использую asp.net mvc 5 и EF 6. У меня в контроллере следующий код

 var resultOne = stats.GetPlayerStatsByParam(year, modeOne); //first
  ViewData["more"] = stats.GetTeamStatsID(year); //second
 return View("StatsNew", resultOne.ToList());

Я могу отобразить результат в виде, используя "resultOne". Теперь я хочу передать другие данные в тот же вид, используя ViewData[]. это хранимая процедура, и результат равен паузе до "ViewData["more"]".

Я сделал следующий код для "ViewData [" more "]" на странице просмотра Но я получаю сообщение об ошибке, в котором говорится, что «ссылка на объект не установлена»

@foreach (var item in ViewData["more"] as @List<demo.GetTeamStatsID_Result>)
{
  @item.Pld;
}

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Как уже отмечалось в комментариях, создайте класс ViewModel, который оборачивает все, что вам нужно:

//I am using fake types here, sinceI don't know your model classes
//substitute accordingly!
public class MyViewModel
{
   public PlayerStatsType PlayerStats { get; set;}
   public List<demo.GetTeamStatsID_Result> Teams { get; set;}
}

Затем в вашем методе действия:

var vm = new MyViewModel();
vm.PlayerStats = stats.GetPlayerStatsByParam(year, modeOne); //first
vm.TeamId = stats.GetTeamStatsID(year); //second
return View("StatsNew", vm);

Измените объявление моделипо вашему мнению:

@model Namespace.Models.MyViewModel //again use namespace for your vm class

Теперь вы можете получить доступ к обоим свойствам из вашей модели:

@foreach (var item in Model.Teams)
{
   @item.Pld;
}
0 голосов
/ 08 мая 2018

Используйте модель представления и расширьте ее данными, поступающими с stats.GetTeamStatsID(year);

Не используйте ViewBag или ViewData, если в этом нет необходимости по какой-либо причине (что я сейчас не могу себе представить)

...