47 votes

Incrémentation simple d'une variable locale dans les vues en ASP.NET MVC3 (Razor)

Eh bien, c'est juste embarrassant. Je n'arrive même pas à comprendre un simple incrément dans une de mes vues en ASP.NET MVC3 (Razor). J'ai fait des recherches et il semble que la documentation pour Razor soit plutôt éparse. Voici ce que j'ai essayé et j'ai échoué lamentablement :

@{
    var counter = 1;

    foreach (var item in Model.Stuff) {
        ... some code ...
        @{counter = counter + 1;}
    }
}   

J'ai également essayé @{counter++;} juste pour le plaisir et sans résultat =) J'apprécierais que quelqu'un puisse m'éclairer. Merci !

76voto

Goran Obradovic Points 4374
@{
    int counter = 1;

    foreach (var item in Model.Stuff) {
        ... some code ...
        counter = counter + 1;
    }
}  

Explication :

@{
// csharp code block
// everything in here is code, don't have to use @
int counter = 1;
}

@foreach(var item in collection){
    <div> - **EDIT** - html tag is necessary for razor to stop parsing c#
    razor automaticaly recognize this as html <br/>
    this is rendered for each element in collection <br/>
    value of property: @item.Property <br/>
    value of counter: @counter++
    </div>
}
this is outside foreach

22voto

johnwinter Points 3614

Je n'ai pas trouvé la réponse ici très utile en c# - donc voici un exemple fonctionnel pour ceux qui viennent sur cette page en cherchant l'exemple c# :

@{
int counter = 0;
}

@foreach(Object obj in OtherObject)
{
    // do stuff
    <p>hello world</p>
    counter++;
}

Simplement, comme nous sommes déjà dans le @foreach, nous n'avons pas besoin de mettre l'incrément à l'intérieur de valeurs @{ }.

13voto

Party Ark Points 577

Si tout ce dont vous avez besoin est d'afficher la numérotation, une solution encore plus propre est l'incrémentation et le retour en une seule fois :

@{
   var counter = 0;
}
<section>
    @foreach(var hat in Ring){
         <p> Hat no. @(++counter) </p>
    }        
</section>

4voto

Jignesh Darji Points 89

Voir le code suivant pour l'incrémentation d'une variable locale dans les vues en ASP.NET, il fonctionne bien pour moi, essayez-le.

var i = 0; 
@foreach (var data in Model)
{
    i++; 
    <th scope="row">
          @i
    </th>....
}...

2voto

JoshYates1980 Points 137

Une autre approche propre serait :

<div>
@{int counter = 1;
 foreach (var item in Model)
 {
   <label>@counter</label>
   &nbsp;
   @Html.ActionLink(item.title, "View", new { id = item.id })
   counter++;
 }
}
</div>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X