2016-07-29 15 views
-1

Ich habe ein Problem, bei dem die view es mir nicht erlaubt, die vollständige Menge an Informationen anzuzeigen.Wie zeigen Sie Informationen aus einer anderen Klasse mit @ Html.DisplayFor?

WorseningParameter Klasse

public class MatrixWorseningParameter 
{ 
    [Key] 
    public int worseningParameterID { get; set; } 
    public int paramID { get; set; } 
    public int paramID2 { get; set; } 

    public virtual MatrixParameter MatrixParameters { get; set; } 
    public virtual ICollection<MatrixWorseningPrinciple> MatrixWorseningPrinciples { get; set; } 
} 

Parameterklasse

public class MatrixWorseningParameter 
{ 
    [Key] 
    public int worseningParameterID { get; set; } 
    [Display(Name = "Main Parameter")] 
    public int paramID { get; set; } 
    [Display(Name = "Worsening Parameter")] 
    public int paramID2 { get; set; } 

    public virtual MatrixParameter MatrixParameters { get; set; } 
    public virtual ICollection<MatrixWorseningPrinciple> MatrixWorseningPrinciples { get; set; } 
} 

Ansicht

@model Main.Models.Matrix.MatrixParameter 
     <tbody> 
      @foreach (var item in Model.MatrixWorseningParameters) 
      { 
       <tr> 
        <td> 
         @Html.DisplayFor(modelItem => item.paramID2) 
         @Html.DisplayFor(modelItem => item.MatrixParameters.fullParam) 
        </td> 
        <td></td> 
        <td> 
         @Html.ActionLink("Add", "../MatrixWorseningParameters/Create", new { id = Model.paramID }) 
        </td> 
       </tr> 
      } 
     </tbody> 

-Controller

public ActionResult Details(int? id) 
    { 
     if (id == null) 
     { 
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
     } 
     MatrixWorseningParameter matrixWorseningParameter = db.WorseningParameters.Find(id); 
     if (matrixWorseningParameter == null) 
     { 
      return HttpNotFound(); 
     } 
     return View(matrixWorseningParameter); 
    } 

Das Ergebnis, das ich auf der Ansicht erhalten, ist es die richtige paramID2 Zahl zeigt, aber leider den Text beziehen sich auf die paramID falsch ist. Es zeigt den Text für die paramID an.

Was soll ich tun, um dies zu überwinden?

+0

Haben Sie '@model Product' Syntax oben in Ihrem Ansichtscode? Wenn ja, sind Sie sicher, dass diese Syntax funktioniert: '@foreach (var item in model.Condition)'? Sollte es nicht '@foreach (var item in Model.Conditions)' stattdessen sein? – ekad

+1

Ich bin verwirrt. Ihr ** Modell ** ist ein ** einzelnes Produktobjekt **; Sie möchten den Wert von ** Name ** anzeigen. ** Bedingung ** Klasse hat keine ** Name ** Eigenschaft. Wenn Sie ** Name ** von Produkt anzeigen möchten, müssen Sie nicht einmal ** Schleife ** durchführen. – Win

+0

@ekad Ich habe die Syntax mit Condition früher bemerkt und meinen Code aktualisiert, um den Plural wiederzugeben. –

Antwort

1

Nun, Sie eine andere DisplayFor sagen unten hinzufügen und die perfekt funktionieren sollte, da Sie Ihre condition Klasse, sagte ein Kind von product ist und somit die Eigenschaften alle in product Klasse definiert enthält (Title, Description, Date)

@Html.DisplayFor(model => item.Title) 
+0

Eigentlich habe ich gerade die Bedingung ausgearbeitet, ist keine Kinderklasse zum Produkt. Deshalb hat deine Antwort und genau das, was ich vorher versucht habe, nicht funktioniert. Irgendwelche Ideen wie man es macht, wenn sie nicht Eltern und Kind sind? –

+0

@TJSUK, Dann müssen Sie diese Eigenschaften in der Konditionsklasse definieren (oder) Vererben von Product (oder) haben eine Instanz von Product in Ihrer Konditionsklasse als Membervariable. – Rahul

+0

Ich dachte, ich hätte innerhalb der 'Condition'-Klasse eine virtuelle Verbindung - öffentliche virtuelle Produktprodukte und in den' Products' habe ich die jeweiligen ICollections <> –

Verwandte Themen