ASP.NET MVC - 在同一视图中使用两个模型



问题是我需要在学校的视图中"调用"人名字段,但是视图学校中的模型是@model IList<Project.Presentation.Models.SchoolViewModel>的,而字段人名在模型@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),但显然它不起作用。

您的视图模型将包含视图中所需的所有属性 - 因此PersonViewModel应该是视图模型中的属性

您没有显示SchoolViewModelPersonViewModel之间的关系

但从名字来看,我猜这是一种一对多的关系——即一个人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>
}

所以关键是,把你所有需要的属性都放到你的视图模型中

创建一个视图模型并将这两个模型包含在其中

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>

人员列表是列表,所以使用每个

同为学校列表

相关内容

  • 没有找到相关文章

最新更新