Простое приращение локальной переменной в представлениях в ASP.NET MVC3 (Razor) - PullRequest
35 голосов
/ 24 сентября 2011

Ну, это просто смущает. Я даже не могу понять простое увеличение одного из моих представлений в ASP.NET MVC3 (Razor). Я сделал поиски, и кажется, что документация для Razor довольно скудна. Вот то, что я попробовал и с треском провалился:

@{
    var counter = 1;

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

Я также пытался @{counter++;} просто ради ударов и безрезультатно =) Буду признателен, если кто-нибудь сможет меня просветить Спасибо!

Ответы [ 5 ]

65 голосов
/ 24 сентября 2011
@{
    int counter = 1;

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

Объяснение:

@{
// 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
20 голосов
/ 18 апреля 2013

Я не нашел здесь ответа, который был бы очень полезен в c # - вот рабочий пример для любого, кто заходит на эту страницу и ищет пример c #:

@{
int counter = 0;
}


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

Просто, поскольку мы уже находимся в @foreach, нам не нужно помещать приращение в значения @ {}.

8 голосов
/ 28 мая 2015

Если все, что вам нужно сделать, это отобразить нумерацию, еще более чистое решение - увеличение и возврат за один раз:

@{
   var counter = 0;
}
<section>
    @foreach(var hat in Ring){
         <p> Hat no. @(++counter) </p>
    }        
</section>
3 голосов
/ 18 января 2017

См. Следующий код для увеличения локальной переменной в представлениях в ASP.NET, ее работа отлично подходит для меня, попробуйте.

var i = 0; 
@foreach (var data in Model)
{
    i++; 
    <th scope="row">
          @i
    </th>....
}...
2 голосов
/ 25 сентября 2014

Еще один чистый подход:

<div>
@{int counter = 1;
 foreach (var item in Model)
 {
   <label>@counter</label>
   &nbsp;
   @Html.ActionLink(item.title, "View", new { id = item.id })
   counter++;
 }
}
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...