Simple incrément d'une variable locale dans les vues en ASP.NET MVC3 (Razor)

eh Bien, c'est juste embarrassant. Je ne peux 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 de Rasoir est assez clairsemé. Voici ce que j'ai essayé et échoué lamentablement:

@{
    var counter = 1;

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

j'ai aussi essayé @{counter++;} juste pour le plaisir et en vain=) j'apprécierais que quelqu'un puisse m'éclairer. Merci!

30
demandé sur Allen Liu 2011-09-24 01:12:09

5 réponses

@{
    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
61
répondu Goran Obradovic 2013-04-18 18:52:48

Je n'ai pas trouvé la réponse ici était très utile dans c# - donc voici un exemple de travail pour quiconque vient à cette page à la recherche de 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 d'aucune valeur @ {}.

18
répondu johnwinter 2013-04-18 18:45:44

si tout ce que vous avez à faire est d'afficher la numérotation, une solution encore plus propre est increment-and-return en une seule fois:

@{
   var counter = 0;
}
<section>
    @foreach(var hat in Ring){
         <p> Hat no. @(++counter) </p>
    }        
</section>
8
répondu Party Ark 2015-05-28 13:12:43

un Autre chiffon propre approche 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>
2
répondu JoshYates1980 2014-09-24 21:23:24

voir le code suivant pour l'incrément d'une variable locale dans les vues en ASP.NET ça marche très bien pour moi.

var i = 0; 
@foreach (var data in Model)
{
    i++; 
    <th scope="row">
          @i
    </th>....
}...
2
répondu Jignesh Darji 2017-01-18 08:59:23