有谁知道为什么这个 Razor 代码无法编译?

发布于 2024-11-10 13:19:41 字数 297 浏览 0 评论 0原文

有人可以帮我编译这个剃刀语法片段吗?

@var count = 0;
@foreach (var column in Enumerable.Range(0, 20).Select(i => "Title " + i) {
    if(count % 5 == 0) { 
        <tr>
    }
    <td>@column</td>
    @if(count % 5 == 4) {
        </tr>
    }
    count++;
}

Could someone help me get this razor syntax snippet to compile?

@var count = 0;
@foreach (var column in Enumerable.Range(0, 20).Select(i => "Title " + i) {
    if(count % 5 == 0) { 
        <tr>
    }
    <td>@column</td>
    @if(count % 5 == 4) {
        </tr>
    }
    count++;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

所有深爱都是秘密 2024-11-17 13:19:41

您不需要 count 变量。我对达林的答案提出了一个替代解决方案:

@foreach (var pair in Enumerable.Range(0, 20).Select(i => new { Title = "Title " + i, Index = i }))
{
    if(pair.Index % 5 == 0) { 
        @:<tr>
    }
    <td>@pair.Title</td>
    if(pair.Index % 5 == 4) {
        @:</tr>
    }
}

正如您在达林的答案和这个答案中看到的那样,当您在块内时,不需要 @ 。此外,您的 对编译器来说看起来“不均匀”,因此我们必须使用 @: 强制这些;。最后,@var count = 0 必须位于像 @{var count = 0} 这样的块中。

更新:如果您确实需要索引(如果您没有使用Range()),那么您可以执行以下操作(使用Select的重载) code> 为每个项目生成一个索引):

@foreach (var pair in yourSource.Select((data, i) => new { Title = "Title " + data, Index = i }))

You do not need the count variable. I've made an alternative solution to Darin´s answer:

@foreach (var pair in Enumerable.Range(0, 20).Select(i => new { Title = "Title " + i, Index = i }))
{
    if(pair.Index % 5 == 0) { 
        @:<tr>
    }
    <td>@pair.Title</td>
    if(pair.Index % 5 == 4) {
        @:</tr>
    }
}

As you can see in Darin´s answer and this answer, you don't need @ when you are inside a block. Furthermore, your <tr> and </tr> look "uneven" to the compiler, so we have to force these with @:<tr>. And last, @var count = 0 will have to be in a block like @{var count = 0}.

Update: If you actually need an index (if you're not using Range()) then you can do as follows (using the overload of Select which generates an index for each item):

@foreach (var pair in yourSource.Select((data, i) => new { Title = "Title " + data, Index = i }))
宁愿没拥抱 2024-11-17 13:19:41
@{
    var count = 0;
}
@foreach (var column in Enumerable.Range(0, 20).Select(i => "Title " + i)) 
{
    if(count % 5 == 0) 
    { 
        @:<tr>
    }
    <td>@column</td>
    if(count % 5 == 4) 
    {
        @:</tr>
    }
    count++;
}
@{
    var count = 0;
}
@foreach (var column in Enumerable.Range(0, 20).Select(i => "Title " + i)) 
{
    if(count % 5 == 0) 
    { 
        @:<tr>
    }
    <td>@column</td>
    if(count % 5 == 4) 
    {
        @:</tr>
    }
    count++;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文