0

很难解释我的问题,但我会尽量说得更明确。也对不起我的英语...

实际上,我认为我有这个数组。 大批

检索它的代码如下:

        @foreach (var item in Model)
        {
              TimeSpan result = DateTime.Now - item.OrderDate;

              if (result.Days < 31)
              {            
                    <tr border="1" bgcolor="@Odd">
                       <td> @Html.DisplayFor(modelItem => item.Username) </td>    
                       <td> @Html.DisplayFor(modelItem => item.OrderId) </td>  
                        <td>
                            <ul style="list-style-type:none; padding:0; margin:0">
                                @if (item.OrderDetails != null)
                                {
                                    foreach (var o in item.OrderDetails)
                                    {
                                        if (o.Pack == null)
                                        { 
                                            <li>  @Html.DisplayFor(modelItem => o.Product.Name)  </li>
                                        }
                                        else
                                        {  
                                            <li> <text>Pack</text>  @Html.DisplayFor(modelItem =>  o.Pack.Name)  </li>
                                        }
                                    }
                                }  
                            </ul>             
                        </td>
......... other td.............  
                    </tr>
              }                                        // 1116 = 36 months
              else if (result.Days > 31 && result.Days <= 1116)
              {
                  if (item.OrderDetails != null)
                  {
                      foreach (var a in item.OrderDetails)
                      {
                          if (a.Pack != null)
                          {          


                            <tr border="1" bgcolor="@Odd">    
                                <td> @Html.DisplayFor(modelItem => item.Username) </td>
                                <td> @Html.DisplayFor(modelItem => item.OrderId) </td>  

                                <td> 
                                    <ul style="list-style-type:none; padding:0; margin:0"> 
                                        @if (item.OrderDetails != null)
                                        {
                                            foreach (var o in item.OrderDetails)
                                            {
                                                if (o.Pack != null)
                                                {
                                                <li><text>Pack </text> @Html.DisplayFor(modelItem => o.Pack.Name)</li> 
                                                }
                                            }
                                        } 
                                    </ul> 
                                </td>      
    ......... other td.............                         
         </table>

所以,如你所知,我有两种产品:产品和包装。在我的第一个 IF 条件(result.days < 31)中,我检索 Pack 和 Product,例如我的订单号 59,因为订单日期少于 31 天。那就是找工作。

现在,对于我的第二个 IF 条件 >31 和 <1116,我希望它只检索我的 PACK。它也很好用,我只有两包,我的产品没有显示,太好了(不要注意单价和数量列,我只是忘记在截屏时取消注释某些行为什么有一个价格和一个数量,它应该什么都没有。)。但正如你所看到的,当我处于第二种情况时,它会为一个订单检索两次该行,因为我在另一个中有两个 foreach 一个。我怎么能通过它,像我的第一个条件一样只有一个线?

我不知道我是否清楚......您可能想知道我在这里使用两个模型。一个 OrderModel 和一个 OrderDetailModel。第一个包含 OrderId, OrderDate, Username, ClientId 第二个包含 OrderDetailId, OrderId, ProductId, UnitPrice(for product), PackId, UnitPricePack。

非常感谢您的回答、提示、链接等...

4

1 回答 1

1

这不是必需的:

                  foreach (var a in item.OrderDetails) 
                  {    
                      if (a.Pack != null) 
                      {         

如果你有一个从 31 天到 1116 天的项目,它有产品但没有包,你仍然会得到一个 tr 元素,并且 Product & Pack 列将为空。

如果这对你没有好处,那就做一个 bool var,也许叫做 havePack,

                  var havepack = false,
                  foreach (var a in item.OrderDetails) 
                  {    
                      if (a.Pack != null) 
                      {         
                          havePack = true;
                      }
                  }
                  if (havePack)
                  {  //now make your <tr> element here
于 2012-09-20T15:12:53.880 回答