ASP.NET MVC3(Razor)中视图中局部变量的简单增量

All*_*Liu 37 razor

嗯,这只是令人尴尬.我甚至无法弄清楚ASP.NET MVC3(Razor)中我的一个视图中的简单增量.我已经完成了搜索,看起来Razor的文档很稀疏.这是我曾经尝试过的,并且悲惨地失败了:

@{
    var counter = 1;

    foreach (var item in Model.Stuff) {
        ... some code ...
        @{counter = counter + 1;}
    }
}   
Run Code Online (Sandbox Code Playgroud)

我也尝试过@{counter++;}踢,但无济于事=)如果有人能开导我,我会很感激.谢谢!

Gor*_*vic 67

@{
    int counter = 1;

    foreach (var item in Model.Stuff) {
        ... some code ...
        counter = counter + 1;
    }
}  
Run Code Online (Sandbox Code Playgroud)

说明:

@{
// 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
Run Code Online (Sandbox Code Playgroud)


joh*_*ter 20

我没有发现这里的答案在c#中非常有用 - 所以这里有一个工作示例,任何人来到这个页面寻找c#示例:

@{
int counter = 0;
}


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

简单地说,因为我们已经在@foreach中,所以我们不需要将增量放在任何@ {}值中.


Par*_*Ark 9

如果你需要做的就是显示编号,一个更清晰的解决方案就是一次性增加和返回:

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