问题是我需要在School的视图中“调用”PersonName字段,但视图School中的模型是@model IList<Project.Presentation.Models.SchoolViewModel>
,字段PersonName在模型@model IList<Project.Presentation.Models.PersonViewModel>
中。 所以,我想我必须在同一个视图中使用两个模型,但我不知道该怎么做。我不知道我是否只能“调用”我需要的字段只需要一个代码行,或者我必须做些什么。
以下是学校视图中的代码:
@model IList<Project.Presentation.Models.SchoolViewModel>
@{
ViewBag.Title = "Start view";
}@
{
<div class="row">
<div class="col-md-6 ">
<h2>
Details of the person @Html.DisplayFor(Project.Presentation.Models.PersonViewModel.PersonName)
</h2>
</div>
</div>
}
我正在尝试@Html.DisplayFor(Project.Presentation.Models.PersonViewModel.PersonName)
,但显然它不起作用。
答案 0 :(得分:1)
您的viewmodel将包含视图中所需的所有属性 - 因此PersonViewModel
应该是viewmodel中的属性
您没有显示SchoolViewModel
和PersonViewModel
但是根据名字来判断,我猜它是一对多的关系 - 即一个SchoolViewModel
会有很多PersonViewModel
代表学校里的人
基于这种假设,您的SchoolViewModel
可能如下所示:
public class SchoolViewModel
{
// other property ..
public IList<Project.Presentation.Models.PersonViewModel> PersonList {get; set;}
}
然后在您看来,它将如下所示:
@model IList<Project.Presentation.Models.SchoolViewModel>
@// first loop school
@for(int i =0; i < Model.Count; i++)
{
<div class="row">
@// then loop all person in the school
@for(int j = 0; j < Model[i].PersonList.Count; j++)
{
<div class="col-md-6 ">
<h2>
Details of the person @Html.DisplayFor(modelItem => Model[i].PersonList[j].PersonName )
</h2>
</div>
}
</div>
}
因此关键是,将所有需要的属性放入viewmodel
答案 1 :(得分:0)
创建一个视图模型并在其中包含这两个模型
public class SchoolPersonViewModel
{
public IList<Project.Presentation.Models.PersonViewModel> PersonList {get; set;}
public IList<Project.Presentation.Models.SchoolViewModel> SchoolList {get; set;}
}
在视图中
<div class="row">
<div class="col-md-6 ">
<h2>
Details of the person
@Html.DisplayFor(model => model.PersonList)
</h2>
</div>
</div>
PersonList是List,所以使用foreach
与学校列表相同