我使用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;
}
答案 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;
}