1

我想在一個視圖中使用兩個模型。爲此我有以下設置。 在一個.cs文件我有以下型號代碼:MVC3 - 一個視圖中的兩個模型 - 錯誤 - 如何分類

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;} 

} 

要使用這兩個類在一個視圖中我在查看.cshtml頁面引用

@model IEnumerable<Project.Models.ParentView> 

。並在我的視圖代碼有這是分手的代碼..我得到一個錯誤說 - 「models.parentview沒有Class1Attribute的定義和沒有擴展方法.....等..」我怎麼分類以下聲明以便識別該屬性。

@foreach (var item in Model) 
    { 

     @Html.DisplayFor(modelItem => item.Class1Attribute) 

     @Html.DisplayFor(modelItem => item.Class1Atttribute)  


    } 

感謝您的幫助。

+0

謝謝大家的有用的提示。 – ZVenue 2011-06-16 16:30:10

+0

當我做出這個改變時,它正在識別屬性(不再有紅色下劃線)......但是我得到了這個錯誤信息。傳遞到字典中的模型項目類型爲'System.Collections.Generic.List'1 [Project.Models.Class1]',但是此字典需要類型爲'System.Collections.Generic.IEnumerable'1的模型項目[Project .Models.ParentView]' – ZVenue 2011-06-16 17:06:07

回答

1
@Html.DisplayFor(modelItem => item.Class1.Class1Attribute) 

你有你的模式多ParentViews?如果沒有,那麼你可以有

@model Project.Models.ParentView 

然後引用您的類屬性爲

@Html.DisplayFor(modelItem => Model.Class1.Class1Attribute) 
@Html.DisplayFor(modelItem => Model.Class2.Class2Attribute) 
+0

當我做出這個改變時,它正在識別屬性(不再有紅色下劃線),但是我得到了這個錯誤信息。傳遞到字典中的模型項目類型爲'System.Collections.Generic.List'1 [Project.Models.Class1]',但是此字典需要類型爲'System.Collections.Generic.IEnumerable'1的模型項目[Project .Models.ParentView]' – ZVenue 2011-06-16 16:38:30

+0

你現在解決了嗎?或者你仍然有錯誤? – 2011-06-17 11:17:14

3

使用

@Html.DisplayFor(modelItem => modelItem.Class1.Class1Attribute) 

或者你可以不喜歡

@foreach (var item in Model.Class1) 
{ 
    @Html.DisplayFor(modelItem => item.Class1Attribute1) 

    @Html.DisplayFor(modelItem => item.Class1Attribute2)  

    } 
2

你的屬性稱爲Class1Class2 =>

@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) 
+0

當我做出這個改變時,它認出屬性(不再有紅色下劃線)......但是我得到了這個錯誤信息。傳遞到字典中的模型項目類型爲'System.Collections.Generic.List'1 [Project.Models.Class1]',但是此字典需要類型爲'System.Collections.Generic.IEnumerable'1的模型項目[Project .Models.ParentView]」。 – ZVenue 2011-06-16 16:36:24

1

我覺得你的循環應該如下

@foreach (var item in Model) 
{ 

    @Html.DisplayFor(modelItem => item.Class1.Class1Attribute) 

    @Html.DisplayFor(modelItem => item.Class1.Class1Atttribute)  
} 

我asssumed Class1AttributeClass1類的屬性

相關問題