0

问题是我需要在 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),但显然它不起作用。

4

2 回答 2

1

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

你没有显示和之间的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>
}

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

于 2017-08-14T03:03:38.363 回答
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

和 SchoolList 一样

于 2017-08-14T04:11:08.600 回答