web-dev-qa-db-fra.com

Comment afficher une liste d'objets dans une vue MVC?

J'ai une méthode qui renvoie une liste de chaînes. Je voudrais simplement afficher cette liste dans une vue comme texte brut.

Voici la liste du contrôleur :

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

et la vue :

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

Je pense que je dois faire quelque chose dans l'affiche comme une boucle de foresach et et référons la liste en utilisant "@" mais comment?

5
WhoAmI

Votre méthode d'action Service doit renvoyer un View. Après cela, le type de retour de votre service () à partir de string à List<string>

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

Après cette référence, le modèle à votre vue:

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

Dans mon exemple, l'actionResulte ressemble à ceci:

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

Qui a entraîné la sortie:

enter image description here

15
Marco

Vous pouvez le faire comme suit dans la vue,

@foreach (var item in @Model)      
{      
     <li>@item.PropertName</li>  
}   
5
Jatin patil