如何从助手内部增加局部变量

时间:2016-06-14 00:32:07

标签: c# razor

我正在尝试计算我的@helper运行的总次数(将此@helper输出的列表项分解为10组)。

无论出于何种原因,我无法找到/弄清楚这一点。我只需要一个可以在@helper内增加的变量。

@functions
{
    public int totalItems = 0;
}

@helper myHelper()
{
    @if (totalItems % 10 == 0)
    {
        </ul><ul>
    }

    <li>List Item #@totalItems</li>

    @{
        // Increment counter
        totalItems = (totalItems + 1);
    }
}

@{
    <ul>
        @for(var i = 0; i < 25; i++)
        {
            @myHelper();
        }
    </ul>

    // It would be great if I could do this after the loop!
    <p>Last list contains @totalItems list items!</p>
}

我只是把上面的代码大脑抛弃了,很抱歉,如果有语法错误......但是我认为这是我的观点?

我想要输出上面的代码:

<ul>
    <li>List Item #1</li>
    <li>List Item #2</li>
    <li>List Item #3</li>
    <li>List Item #4</li>
    <li>List Item #5</li>
    <li>List Item #6</li>
    <li>List Item #7</li>
    <li>List Item #8</li>
    <li>List Item #9</li>
    <li>List Item #10</li>
</ul>

<ul>
    <li>List Item #1</li>
    <li>List Item #2</li>
    <li>List Item #3</li>
    <li>List Item #4</li>
    <li>List Item #5</li>
    <li>List Item #6</li>
    <li>List Item #7</li>
    <li>List Item #8</li>
    <li>List Item #9</li>
    <li>List Item #10</li>
</ul>

<ul>
    <li>List Item #1</li>
    <li>List Item #2</li>
    <li>List Item #3</li>
    <li>List Item #4</li>
    <li>List Item #5</li>
</ul>

上述标记虽然没有实现。相反,页面错误。我没有使用像Visual Studio这样的IDE,因此我不知道抛出了什么错误,但是当我将以下内容添加到我的视图时会出现错误:

@{
    // Increment counter
    totalItems = (totalItems + 1);
}

任何人都可以解释实现这一目标的正确方法吗?非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

你可以简化整个事情:

@helper myHelper(){
    int totalItems = 0;
    <ul>
        @for(var i = 0; i < 25; i++)
        {
            totalItems = i;
            @if (totalItems % 10 == 0)
            {
                </ul><ul>
            }
            <li>List Item #@totalItems</li>
        }
    </ul>

    <p>Last list contains @totalItems list items!</p>
}

通过删除所有额外的helper内容,并使用modulo(%)而不是每10次重置一次。您可能需要进行一些修改,我对剃刀语法不太熟悉。