razor html输出结果

时间:2015-03-28 23:09:21

标签: c# razor

我正在尝试在我的@helpers代码中输出结果,代码看起来像这样

@helpers listfiles(String ID, String CNumber,){
   foreach(Loopitem I in GetLoop("items")){
      if(I.GetValue("userId") == ID){
            <li>@I.GetValue("name")</li>
         }else{
              If(I.GetValue("userId") != ID){
                 <li>@I.GetValue("name")</li>
                }
            }
    }    

} 

结果我获得了所有li元素,但我想要的是如果语句为true,它应该将所有li元素包装在ul元素中,而对于else语句,它应该将所有li包装在新的UL元素中。请帮忙

2 个答案:

答案 0 :(得分:1)

使用两个foreach的一种可能方式,每个用户ID组一个:

@helpers listfiles(String ID, String CNumber,){
    <ul>
    foreach(Loopitem I in GetLoop("items").Where(o => o.GetValue("userId") == ID)){
        <li>@I.GetValue("name")</li>
    }
    </ul>
    <ul>
    foreach(Loopitem I in GetLoop("items").Where(o => o.GetValue("userId") != ID)){
        <li>@I.GetValue("name")</li>
    }
    </ul>
} 

答案 1 :(得分:0)

你的意思是这样的:

@helpers listfiles(String ID, String CNumber,){
   var lstTrue = new List<>();
   var lstFalse = new List<>();
   foreach(Loopitem I in GetLoop("items")){
      if(I.GetValue("userId") == ID)
            lstTrue.Add(I);
      else
            lstFalse.Add(I);
    }
   if(lstTrue.Count()>0)
   {
      <ul> foreach(var I in lstTrue){<li>@I.GetValue("name")</li>}</ul>
   }
   if(lstFalse.Count()>0)
   {    
      <ul> foreach(var I in lstTrue){<li>@I.GetValue("name")</li>}</ul>
   }   
} 

或者您可以使用Lambda表达式来减少代码行。