1

我不明白我在这里错过了什么?在我看来,我的代码将每个组列出两次?

 <% foreach (var group in Model.AllGroups)  //53 entries here
 { %>     
   <% foreach (var groupForUser in Model.GroupsForUser) //2 entries here
      { %>    
      <% if (group.GroupId == groupForUser.GroupId) 
         { %>
           <div id="Div1" style="width:auto; height:50px; border:solid 1px black; margin:5px; **background-color:green**;" >
             <h3>&nbsp; &nbsp; <a href="javascript:OnGroupClicked(<%: groupForUser.GroupId %>)" id="changer1<%: group.GroupId %>"><%: groupForUser.Name %></a></h3> 
           </div>
            <input type="hidden" id="Hidden1" name="group<%: group.GroupId %>" value="" />
       <% }
          else %>  
       <% { %>
           <div id="group-select<%: group.GroupId %>" style="width:auto; height:50px; border:solid 1px black; margin:5px;" >
             <h3>&nbsp; &nbsp; <a href="javascript:OnGroupClicked(<%: group.GroupId %>)" id="changer<%: group.GroupId %>"><%: group.Name %></a></h3> 
           </div>
           <input type="hidden" id="group<%: group.GroupId %>" name="group<%: group.GroupId %>" value="" />
       <% } } }%>

有更好的方法吗?以及为什么我认为这些组两次列出?谢谢

4

1 回答 1

1

它们被列出两次,因为您在其中有 2 个条目,GroupsForUsers并且您在每次迭代中输出每个组(因为您else在 inner 中的语句foreach)。

更好的方法是完全切断内部循环(使用 Linq),例如:

<% foreach (var group in Model.AllGroups)
   { %>      
     <% if (Model.GroupsForUsers.Any(g => g.GroupId == group.GroupId)
        { %>
            //make it green
     <% }
        else %>  
     <% { %>
           //make it red
   <% } }%>
于 2013-02-20T14:00:15.810 回答