多个结果传递到asp.net MVC5中的视图时出错

时间:2018-05-08 10:58:32

标签: asp.net-mvc asp.net-mvc-4

我使用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"]"

我在View页面中为“ViewData [”more“]”完成了以下代码 但是我收到一条错误,说'对象引用未设置'

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

2 个答案:

答案 0 :(得分:0)

使用viewmodel并使用来自stats.GetTeamStatsID(year);

的数据对其进行扩展

如果由于某些原因(我现在无法想象)不需要,请不要使用ViewBag或ViewData。

答案 1 :(得分:0)

正如评论已经指出的那样,构建一个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;
}