我的索引与页面模型一样,接受对象列表
@model List<MyProject.Domain.Object>
@Html.Partial("PickDatePartial")
@Html.Partial("ObjectPartial", Model)
我的问题出在第一个部分页面内,导致此部分页面接受不是列表而是单个@model MyProject.Domain.Object
我怎样才能实现这一点,在当前情况下,索引页面无法呈现,因为它期望接收对象列表。
提前谢谢。
答案 0 :(得分:2)
嗯,你可以做的一件快速而又脏的事情是将第一个对象传递给PickDatePartial
@Html.Partial("PickDatePartial", Model.First())
然而,这不是很干净。我建议创建一个包含两个属性的视图模型,1)整个列表,2)由PickDatePartial
绑定的那个:
public class IndexViewModel
{
public List<MyProject.Domain.Object> MyList { get; set; }
public MyProject.Domain.Object ObjectToBind { get; set; }
}
然后在您的控制器的Index
操作中:
public ActionResult Index()
{
var myList = // instantiate list here
var viewModel = new IndexViewModel
{
MyList = myList,
ObjectToBind = myList.First() // or whichever you need out of that list
}
return View(viewModel);
}
当然,您需要在Index
视图中更改模型的类型。现在Index
视图如下所示:
@model IndexViewModel
@Html.Partial("PickDatePartial", Model.ObjectToBind)
@Html.Partial("ObjectPartial", Model.MyList)
答案 1 :(得分:1)
如果“PickDatePartial”需要一个对象,并且你给它一个对象列表,它应该使用哪个对象?
由你来决定做什么。
您可以告诉它使用第一个对象:
@if (Model.Count > 0) {
@Html.Partial("PickDatePartial", Model[0])
}
或者,您可以为每个对象调用它:
@foreach(var item in Model) {
@Html.Partial("PickDatePartial", item)
}
可能性无穷无尽。