我想在一个视图中使用两个模型。为此,我有以下设置。 在单个.cs文件中,我有以下型号代码:
public class Class1
{
//List of atttributes 1.
}
public class Class2
{
//List of atttributes 2.
}
public class ParentView
{
public Class1 Class1{get; set;}
public Class2 Class2{get; set;}
}
要在一个视图中使用这两个类,我引用
@model IEnumerable<Project.Models.ParentView>
在View .cshtml页面中。在我的视图代码中有这个代码正在分解..我得到一个错误说 - “models.parentview没有Class1Attribute的定义,也没有扩展方法.....等等。”我怎么能分类下面的语句,以便它识别属性。
@foreach (var item in Model)
{
@Html.DisplayFor(modelItem => item.Class1Attribute)
@Html.DisplayFor(modelItem => item.Class1Atttribute)
}
感谢您的帮助。
答案 0 :(得分:3)
使用
@Html.DisplayFor(modelItem => modelItem.Class1.Class1Attribute)
或者你可以做类似
的事情 @foreach (var item in Model.Class1)
{
@Html.DisplayFor(modelItem => item.Class1Attribute1)
@Html.DisplayFor(modelItem => item.Class1Attribute2)
}
答案 1 :(得分:2)
您的属性称为Class1
和Class2
=&gt;
@Html.DisplayFor(x => x.Class1.Class1Attribute)
@Html.DisplayFor(x => x.Class2.Class2Attribute)
甚至更好地使用显示模板而不是编写任何循环:
@Html.DisplayForModel()
然后在~/Views/Shared/DisplayTemplates/ParentView
内:
@model ParentView
@Html.DisplayFor(x => x.Class1)
@Html.DisplayFor(x => x.Class2)
和~/Views/Shared/DisplayTemplates/Class1.cshtml
内部:
@model Class1
@Html.DisplayFor(x => x.Class1Attribute)
和~/Views/Shared/DisplayTemplates/Class2.cshtml
内部:
@model Class2
@Html.DisplayFor(x => x.Class2Attribute)
答案 2 :(得分:1)
我认为你的循环应该如下
@foreach (var item in Model)
{
@Html.DisplayFor(modelItem => item.Class1.Class1Attribute)
@Html.DisplayFor(modelItem => item.Class1.Class1Atttribute)
}
我认为Class1Attribute
是Class1
类
答案 3 :(得分:1)
@Html.DisplayFor(modelItem => item.Class1.Class1Attribute)
您的模型中有多个ParentView吗?如果没有,那么你可以
@model Project.Models.ParentView
然后将您的类属性引用为
@Html.DisplayFor(modelItem => Model.Class1.Class1Attribute)
@Html.DisplayFor(modelItem => Model.Class2.Class2Attribute)