Подтвердить что ты не робот

Простой приращение локальной переменной в представлениях в ASP.NET MVC3 (Razor)

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

@{
    var counter = 1;

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

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

4b9b3361

Ответ 1

@{
    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

Ответ 2

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

@{
int counter = 0;
}


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

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

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

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

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