4

这里正在实现 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:我已经回答了这个问题(编辑)

4

3 回答 3

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";
}

您正在定义模型,但您在 Controll Action (Index) 中的语句中IEnumerable传递了一个Listdown 。如果您想防止集合在您的视图中被修改,return您也可以选择传递。IEnumerable

于 2013-05-14T09:52:51.110 回答
1

对于新错误,您可以将元组的特定部分传递给每个部分:

@Html.Partial("EventDetails", Model.Item1)

@Html.Partial("SlideShow", Model.Item2)

但就像@henk-holterman 所说,您可能应该制作一个特定的视图模型。

于 2013-05-14T10:15:21.230 回答
1

我的编辑答案是@model Tuple<List<MvcApplication1.Models.EventRepository>, List<MvcApplication1.Models.SlideShow>>

由于我们返回带有两个对象集合作为元组的视图,因此我们必须在部分视图中定义这两个模型

于 2013-05-14T10:22:04.760 回答