【问题标题】:Simple increment of a local variable in views in ASP.NET MVC3 (Razor)ASP.NET MVC3 (Razor) 视图中局部变量的简单增量
【发布时间】:2011-09-23 21:12:09
【问题描述】:

嗯,这只是令人尴尬。我什至无法在 ASP.NET MVC3 (Razor) 中的一个视图中找出一个简单的增量。我已经进行了搜索,看来 Razor 的文档非常稀少。以下是我尝试过但惨遭失败的方法:

@{
    var counter = 1;

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

我也试过@{counter++;} 只是为了踢球但无济于事=)如果有人能启发我,我将不胜感激。谢谢!

【问题讨论】:

    标签: razor


    【解决方案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
    

    【讨论】:

    • 谢谢。我都试过了。第一个至少加载页面,但 foreach 循环并没有使其超过第一个循环,这告诉我计数器出了点问题。第二个建议导致编译错误。
    • 是的,使用 int counter 对我有用。谢谢您的帮助! =)
    • 动态编译好像不适合类型推断……不客气!
    【解决方案2】:

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

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

      【讨论】:

      • 同上。我认为关键是 ++counter 周围的括号。
      【解决方案4】:

      请参阅以下代码以了解在 ASP.NET 中的视图中局部变量的增量,它对我来说工作正常,试试吧。

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

      【讨论】:

        【解决方案5】:

        另一种干净的方法是:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多