【问题标题】:ASP.NET razor engine seems retard [closed]ASP.NET 剃须刀引擎似乎延迟 [关闭]
【发布时间】:2016-12-15 05:06:42
【问题描述】:

我的视图只包含以下内容:

<table>
    @for (int i = 0; i < 10; i++)
    {
        if (i % 5 == 0)
        {
            <tr>
        }

        <td>
           Hello
        </td>

        if (i % 5 == 0)
        {
            </tr>
        }
    }
</table>

我打算制作如下

<table>
    <tr>
        <td>Hello</td>
        <td>Hello</td>
        <td>Hello</td>
        <td>Hello</td>
        <td>Hello</td>
    </tr>
    <tr>
        <td>Hello</td>
        <td>Hello</td>
        <td>Hello</td>
        <td>Hello</td>
        <td>Hello</td>
    </tr>
</table>

但它却产生了以下结果:

    <table>
            <tr>
        }

        <td>
           Hello
        </td>

        if (i % 5 == 0)
        {
            </tr>
            <tr>
        }

        <td>
           Hello
        </td>

        if (i % 5 == 0)
        {
            </tr>
</table>

怎么了?

【问题讨论】:

  • 尝试将您的 html 标签包装在文本元素中,如下所示:

标签: asp.net-mvc razor


【解决方案1】:

你必须在你希望在页面上显示的任何 HTML 前面加上 @: 当它在代码块中时

<table>
    @for (int i = 0; i < 10; i++)
    {
        if (i % 5 == 0)
        {
            @:<tr>
        }

        @:<td>
        @:Hello
        @:</td>

        if (i % 5 == 0)
        {
            @:</tr>
        }
    }
</table>

【讨论】:

    【解决方案2】:

      @for (int i = 0; i < 10; i++)
      {
      if (i % 5 == 0)
      {
          @:<tr>
      }
     <td>
        Hello
    </td>
    
    if (i % 5 == 0)
    { 
     @:</tr>
    }
    
    }
    </table>
    

    【讨论】:

      【解决方案3】:

      要产生所需的输出,您实际上需要以下内容:

      <table>
          @for (int i = 0; i < 10; i++)
          {
              if (i % 5 == 0)
              {
                  @:<tr>
              }
      
              @:<td>
              @:Hello
              @:</td>
      
              if ((i + 1) % 5 == 0)
              {
                  @:</tr>
              }
          }
      </table>
      

      注意第二个 if 语句的变化。或者,您可以使用嵌套的 for 循环来产生相同的结果。

      <table>
          @for (int i = 0; i < 2; i++)
          {
              <tr>
                  @for (int j = 0; j < 5; j++)
                  {
                      <td>Hello</td>
                  }
              </tr>
          }
      </table>
      

      【讨论】:

        【解决方案4】:

        你的代码块应该跨多行,所以应该在大括号内(@ 后面的大括号)

        @{
        for (int i = 0; i < 10; i++)
        {
         Blah blah...
        }
        }
        

        【讨论】:

          猜你喜欢
          • 2013-02-22
          • 1970-01-01
          • 1970-01-01
          • 2011-08-20
          • 1970-01-01
          • 1970-01-01
          • 2014-02-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多