避免在mvc3助手中打印if条件

时间:2011-12-12 15:07:34

标签: c# asp.net-mvc-3 razor

我创建了一个帮助器来构建一个列表我的问题就是每次if表达式它会在我的html中用true或false打印值。我怎样才能避免这种行为?

这是我的助手

@helper elementTipificacion(IEnumerable<prueba.Models.Tipificacion> datos){

foreach (var item in @datos)
{
    if (@item.Tipificacion1.Count > 0) <--- this the expression thay print's true or false
    {
        <li>
            <a href="#" id="tipificacion-@item.IdTipificacion">@item.Nombre</a>
            <ul>
                @elementTipificacion(@item.Tipificacion1)
                </ul>    
        </li>
    }
    else{
        <li>
            <a href="#" id="tipificacion-@item.IdTipificacion">@item.Nombre</a>
        </li>
    }

    @datos.ToList().Remove(@item);
}
}

这就是输出

enter image description here

1 个答案:

答案 0 :(得分:5)

你有太多@。仅当您要将服务器端变量输出到HTML时才使用@。当你在服务器端语句中时,如foreach,if,...不要使用@:

@helper elementTipificacion(IEnumerable<prueba.Models.Tipificacion> datos)
{
    foreach (var item in datos)
    {
        if (item.Tipificacion1.Count > 0)
        {
            <li>
                <a href="#" id="tipificacion-@item.IdTipificacion">
                    @item.Nombre
                </a>
                <ul>
                    @elementTipificacion(@item.Tipificacion1)
                </ul>    
            </li>
        }
        else
        {
            <li>
                <a href="#" id="tipificacion-@item.IdTipificacion">
                    @item.Nombre
                </a>
            </li>
        }

        datos.ToList().Remove(item); // <!-- not sure the usefulness of this line
        // The .ToList() extension method returns a new list everytime you call it
        // and you don't seem to be doing anything with the result of it, you don't even
        // assign it to a variable
    }
}