2016-04-01 16 views
0

Ich habe einen Blick in MVC4 die wie folgt aussieht:Kopfzeile für editorfor Vorlage

@model List<Home.Models.Model> 
@{ 
ViewBag.Title = "DPR"; 
Layout = "~/Views/Shared/_Layout.cshtml"; 
} 
@using (Html.BeginForm("AgendaNotes", "Home", FormMethod.Post, new { @id = "formDPR"})) 
{ 
<table style="font-size:xx-small"> 
    <thead> 
     <tr> 
      <th>Name</th> 
      <th>DOD ID</th> 
      <th>Last Review</th> 
      <th>Include?</th> 
      <th>Reason</th> 
      <th>Notes</th> 
     </tr> 
    </thead> 
</table> 
<div style="background-color:white"> 
    @Html.EditorForModel() 
</div> 
<div> 

</div> 
} 

Und die model.cshtml ist einfach einige der Felder in einer einzigen Zeile. Ich möchte keine Header auf diese einzelne Zeile setzen, da sie so oft wiederholt werden, wie sie in der Liste sind. Gibt es eine einfache Möglichkeit, einen Header für die Zeilen des Modells im Editor für Vorlage zu erstellen?

Dies ist, wie ich es tat:

<table style="font-size:xx-small" class="table_body"> 
     <thead> 
      <tr> 
       <th>Name</th> 
       <th>DOD ID</th> 
       <th>Last Review</th> 
       <th>Include?</th> 
       <th>Reason</th> 
       <th>Notes</th> 
      </tr> 
     </thead> 
     @for (var i = 0; i < Model.Count; i++) 
     { 
      <tr> 
       @Html.EditorFor(m=>Model[i]) 
      </tr> 
     } 
    </table> 

Und im model.cshtml einfach es einige Felder jeweils in einem TD-Element.

+0

Nur um sicher zu sein, wollen Sie einen Tabellenkopf mit vielen Zeilen haben und Ihre Editor-Vorlage ist nur für die Zeilen zB .... – Captain0

+0

@ Captain0 ja das ist richtig. –

+0

Möchten Sie eine Liste/einzelnes Objekt an Ihre Editor-Vorlage übergeben – Captain0

Antwort

1

Nicht 100% sicher, dass ich Sie richtig verstehe. Erstellen Sie den Tabellenkopf in der Ansicht, rufen Sie dann die EditorTemplate in ein für jeden

@using (Html.BeginForm("AgendaNotes", "Home", FormMethod.Post, new { @id = "formDPR" })) 
{ 
    <table style="font-size:xx-small"> 
    <thead> 
     <tr> 
      <th>Name</th> 
      <th>DOD ID</th> 
      <th>Last Review</th> 
      <th>Include?</th> 
      <th>Reason</th> 
      <th>Notes</th> 
     </tr> 
    </thead> 
    <tbody> 
     @foreach (var item in Model.Details) 
     { 
      @testTemplate(item) 
     } 
    </tbody> 
    </table> 
} 

dann den Editor Template ändern für nur eine Zeile zum Beispiel sein.

@helper testTemplate(Details detail) 
{ 
    <tr> 
    <td>@detail.Propery1</td> 
    <td>@detail.Propery2</td> 
    </tr> 
} 

Ich habe einen Inline-Helfer verwendet, nur um zu veranschaulichen, was ich meine. Jetzt sollten Sie eine Tabelle mit einem Header und vielen Zeilen haben