2014-03-12 3 views
5

Ich habe eine Methode, die eine Liste von Zeichenfolgen zurückgibt. Ich möchte diese Liste in einer Ansicht einfach als reinen Text anzeigen.Wie wird eine Liste von Objekten in einer MVC View angezeigt?

Hier ist die Liste von der Steuerung:

public class ServiceController : Controller 
{ 

    public string Service() 
    { 
     //Some code.......... 
     List<string> Dates = new List<string>(); 
     foreach (var row in d.Rows) 
     { 
      Dates.Add(row[0]); 
     } 
     return Dates.ToString(); 
    } 

    public ActionResult Service() 
    { 
     Service(); 
    } 
} 

Und die Aussicht:

<table class="adminContent"> 
    <tr> 
     <td>HEJ</td> 
    </tr> 
    <tr> 
     <td>@Html.Action("Service", "Service")</td> 
    </tr> 
    </tr> 
</table> 

ich ich heraus etwas in der Ansicht wie eine foreach-Schleife tun müssen und und verweisen die Liste mit "@" aber wie?

+0

Sie dieses Beispiel überprüfen: http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music -store-part-3 –

Antwort

11

Sie zuerst einen Blick in Ihrem Controller zurückgeben sollte und die Art des Service() ändern

public List<string> Service() 
{ 
    //Some code.......... 
    List<string> Dates = new List<string>(); 
    foreach (var row in d.Rows) 
    { 
     Dates.Add(row[0]); 
    } 
    return Dates; 
} 

public ActionResult GAStatistics() 
{ 
    return View(Service()); 
} 

Nach diesem Bezug zur Liste das Modell in der Ansicht:

@model List<string> 
@foreach (var element in Model) 
{ 
    <p>@Html.DisplayFor(m => element)</p> 
} 

in meinem Beispiel sieht der Action wie folgt aus:

public ActionResult List() 
{ 
    List<string> Dates = new List<string>(); 
    for (int i = 0; i < 20; i++) 
    { 
     Dates.Add(String.Format("String{0}", i)); 
    } 
    return View(Dates); 
} 

, die in der Ausgabe ergab:

enter image description here

+0

Eigentlich macht das viel Sinn. Vielen Dank! BTW ist die For-Schleife wirklich notwendig? Ich meine, sagen wir, wir wissen nicht, wie Manny-Items in der Liste sind, kann ich stattdessen eine foreach-Schleife machen, so dass es kein maximales Ergebnis gibt? Alternativ dazu gilt: for (int i = 0; i! = 0; i ++) { Dates.Add (String.Format ("String {0}", i)); } Rückansicht (Daten); – koffe14

+1

Die for-Schleife im Controller dient nur zu Demonstrationszwecken, um einige Inhalte in der Liste zu erhalten. Nutze, was immer du willst und was immer du brauchst. – Marco

+0

Scheint, als ob ich ein Problem habe. Ich habe bereits ein Modell @model ServiceListModel Getting the error Ich kann nur 1 Modell haben. – koffe14

2

Sie können es tun, wie in der Ansicht folgt,

@foreach (var item in @Model)  
{  
    <li>@item.PropertName</li> 
} 
Verwandte Themen