2011-09-23 7 views
30

これはちょっと恥ずかしいことです。私はASP.NET MVC3(Razor)で私のビューの一つで単純な増分を計算することさえできません。私は検索を行っており、Razorのドキュメントはかなり疎であるようです。ここで私が試したもので、無残に失敗しました:ASP.NET MVC3(Razor)のビューでのローカル変数の単純な増分

@{ 
    var counter = 1; 

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

私は、誰かが私を啓発することができれば、私はそれを感謝)=ちょうど蹴りのためにと無駄に@{counter++;}をも試してみました。ありがとう!

答えて

58
@{ 
    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 
+0

ありがとうございました。私は両方を試みました。最初のものは少なくともページをロードしますが、foreachループは最初のループを通過しません。 2番目の提案は、コンパイルエラーにつながります。 –

+1

intをintとして宣言しようとしましたか? EDIT実際には、割り当てられたときint型です。 –

+0

はい、 'int counter'を使用してくれました。助けてくれてありがとう! =) –

16

私はここで答えはC#で非常に有用であった見つけることができませんでした - ので、ここで誰もがC#の例を探してこのページに来るための作業例です:

@{ 
int counter = 0; 
} 


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

すでに@foreachに入っているので、増分を@ {}値の中に入れる必要はありません。

2

別のきれいなアプローチは次のようになります。

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

すべてを行う必要がナンバリングを表示している場合でもクリーンなソリューションが一度に増加-とリターンです:

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

私のために働いた唯一の解決策 – kobe

+1

Ditto。私はキーが++カウンターの周りのかっこであると思う。 –

1

ASP.NETでのビューのローカル変数の増分については、次のコードを参照してください。

var i = 0; 
@foreach (var data in Model) 
{ 
    i++; 
    <th scope="row"> 
      @i 
    </th>.... 
}... 
関連する問題