C# razor中此代码的正确语法

C# razor中此代码的正确语法,c#,asp.net-mvc-3,razor,C#,Asp.net Mvc 3,Razor,我在尝试使此代码与razor一起工作时遇到问题 @for (int i = 0; i < Model.Count(); i++) { <ul>@createSubastaContainer(Model.ElementAt(i)) if (i % 5 == 0) { </ul> } } for(int i=0;i

我在尝试使此代码与razor一起工作时遇到问题

@for (int i = 0; i < Model.Count(); i++)
{
    <ul>@createSubastaContainer(Model.ElementAt(i))
    if (i % 5 == 0)
    {
        </ul>
    }
}
for(int i=0;i@createSubataContainer(Model.ElementAt(i)) 如果(i%5==0) { } } 如果元素是5的倍数,我想要的是打印

我的代码有什么问题,因为它一直在打印
,同时也在打印表达式本身

更新

基于红色@marteljn,在我更改抛出异常时回答它


for块缺少结束“}”字符。确保此块中的所有“{”字符都有一个匹配的“}”字符,并且“}”字符都没有被解释为标记。

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

编辑

它正在拾取一个不匹配的标记。razor view引擎在遇到不匹配的标记时会强制遵守HTML。因此,您可以做的是将标记替换为
@HTML.Raw(“
@HTML.Raw(”)
尝试以下操作:

@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@createSubataContainer(Model.ElementAt(i)) @如果(i%5==0) { } } 或者这个:

@for (int i = 0; i < Model.Count(); i++)  
{
    <ul>@createSubastaContainer(Model.ElementAt(i))
    @if (i % 5 == 0)
    {
        @: </ul>
    }
}
for(int i=0;i@createSubataContainer(Model.ElementAt(i)) @如果(i%5==0) { @: } } 在这里,你有一个关于所有这些的好帖子:

希望它有帮助

这应该是可行的:

@for (int i = 0; i < Model.Count(); i++) 
{ 
    @:<ul>
    createSubastaContainer(Model.ElementAt(i)) 
    if (i % 5 == 0) 
    { 
        @:</ul> 
    } 
} 
for(int i=0;i CreateSubataContainer(Model.ElementAt(i)) 如果(i%5==0) { @: } }
我编辑了我的答案…第二次…Html.Raw是最好的选择。