这里实现了Tuple在我的视图中使用两个模型。但是我收到了以下错误
The model item passed into the dictionary is of type
'System.Tuple`2[System.Collections.Generic.List`1[MvcApplication1.Models.EventRepository],System.Collections.Generic.List`1[MvcApplication1.Models.SlideShow]]',
but this dictionary requires a model item of type
'System.Tuple`2[System.Collections.Generic.IEnumerable`1[MvcApplication1.Models.EventRepository],System.Collections.Generic.IEnumerable`1[MvcApplication1.Models.SlideShow]]'.
这是我的查看:
@model Tuple<IEnumerable<MvcApplication1.Models.EventRepository>, IEnumerable<MvcApplication1.Models.SlideShow>>
ViewBag.Title = "Home Page";
}
控制器:
[HttpPost]
public ActionResult Index(string SearchParam)
{
EventRepository objcheckout = new EventRepository();
objcheckout.GetEventDetails(SearchParam);
SlideShow SS = new SlideShow();
SS.GetSlideDetail(SearchParam);
return View(Tuple.Create(objcheckout.GetEventDetails(SearchParam), SS.GetSlideDetail(SearchParam)));
}
有什么建议吗?
修改 这里我在视图中调用两个部分视图并收到此错误
The model item passed into the dictionary is of type
'System.Tuple`2[System.Collections.Generic.List`1[MvcApplication1.Models.EventRepository],System.Collections.Generic.List`1[MvcApplication1.Models.SlideShow]]',
but this dictionary requires a model item of type
'System.Collections.Generic.List`1[MvcApplication1.Models.EventRepository]'.
这是我的视图
@model Tuple<IEnumerable<MvcApplication1.Models.EventRepository>, IEnumerable<MvcApplication1.Models.SlideShow>>
@Html.Partial("EventDetails")
@Html.Partial("SlideShow")
和 部分视图1
@model List<MvcApplication1.Models.EventRepository>
部分视图2
@model List<MvcApplication1.Models.SlideShow>
Answer:
我已回答了这个问题(编辑)
答案 0 :(得分:4)
变化:
@model Tuple<IEnumerable<MvcApplication1.Models.EventRepository>, IEnumerable<MvcApplication1.Models.SlideShow>>
ViewBag.Title = "Home Page";
}
到
@model Tuple<List<MvcApplication1.Models.EventRepository>, IEnumerable<MvcApplication1.Models.SlideShow>>
ViewBag.Title = "Home Page";
}
您将模型定义为IEnumerable
,但您在控制操作(索引)中的List
语句中传递了return
。如果您希望在视图中修改集合,也可以选择传递IEnumerable
。
答案 1 :(得分:1)
对于新错误,您可以将元组的特定部分传递给每个部分:
@Html.Partial("EventDetails", Model.Item1)
@Html.Partial("SlideShow", Model.Item2)
但是像@ henk-holterman所说,你应该制作一个特定的视图模型。
答案 2 :(得分:1)
我的编辑答案为@model Tuple<List<MvcApplication1.Models.EventRepository>, List<MvcApplication1.Models.SlideShow>>
由于我们将两个对象集合作为元组返回视图,我们必须在部分视图中定义两个模型