1

ここで何が欠けているのかわかりませんか?私の見解では、私のコードは各グループを2回リストしていますか??

 <% 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="" />
       <% } } }%>

これを行うより良い方法はありますか?また、グループが 2 回表示されるのはなぜですか? ありがとう

4

1 に答える 1

1

内部に2つのエントリがあり、各反復ですべてのGroupsForUsersグループを出力しているため(内部のステートメントのため)、それらは2回リストされています。elseforeach

より良い方法は、(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 に答える