2

我在尝试使此代码与剃须刀一起使用时遇到问题

@for (int i = 0; i < Model.Count(); i++)
{
    <ul>@createSubastaContainer(Model.ElementAt(i))
    if (i % 5 == 0)
    {
        </ul>
    }
}

如果元素是 5 的乘积,我想要什么打印结束</ul>

我的代码有什么问题,因为它一直在打印</ul>以及表达式本身

更新

基于红色的@marteljn 在我进行更改时回答它会引发异常

The for block is missing a closing "}" character. Make sure you have a matching "}" character for all the "{" characters within this block, and that none of the "}" characters are being interpreted as markup.

4

3 回答 3

3

您需要@在您的if语句之前放置一个,因此@if (...,作为旁注,这将是创建扩展 HtmlHelper 类的扩展方法的绝佳机会。

编辑

它正在拾取一个不匹配的标签。当涉及到不匹配的标签时,razor 视图引擎强制执行 HTML 合规性。所以你可以做的是用@Html.Raw("<ul>")and替换你的标签@Html.Raw("</ul>")

于 2012-05-14T01:31:01.613 回答
0

尝试这个:

@for (int i = 0; i < Model.Count(); i++)  
{
    <ul>@createSubastaContainer(Model.ElementAt(i))
    @if (i % 5 == 0)
    {
        <text></ul></text>
    }
}

或这个:

@for (int i = 0; i < Model.Count(); i++)  
{
    <ul>@createSubastaContainer(Model.ElementAt(i))
    @if (i % 5 == 0)
    {
        @: </ul>
    }
}

在这里,您有一篇关于这一切的精彩帖子:http ://weblogs.asp.net/scottgu/archive/2010/12/15/asp-net-mvc-3-razor-s-and-lt-text-gt-语法.aspx

希望能帮助到你

于 2012-05-14T02:10:01.727 回答
0

这应该工作:

@for (int i = 0; i < Model.Count(); i++) 
{ 
    @:<ul>
    createSubastaContainer(Model.ElementAt(i)) 
    if (i % 5 == 0) 
    { 
        @:</ul> 
    } 
} 
于 2012-05-14T08:23:14.847 回答