Простой приращение локальной переменной в представлениях в ASP.NET MVC3 (Razor)
Ну, это просто смущает. Я даже не могу понять простой прирост в одном из моих представлений в ASP.NET MVC3 (Razor). Я выполнил поиск, и похоже, что документация для Razor довольно скудная. Вот что я пробовал и терпел неудачу:
@{
var counter = 1;
foreach (var item in Model.Stuff) {
... some code ...
@{counter = counter + 1;}
}
}
Я также пробовал @{counter++;}
только для пинков и безрезультатно =) Я был бы признателен, если бы кто-нибудь мог просветить меня. Спасибо!
Ответы
Ответ 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>
@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>....
}...