可以在具有foreach条件的单元格中显示多个项目吗? [英] Is it possible to display more than one item in a cell with a foreach condition?

查看:154
本文介绍了可以在具有foreach条件的单元格中显示多个项目吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我认为通过图片可视化比我解释我想要的更容易。 现在我有第一个,但是我遇到的问题是我的表格像这样动态地填充:

  @model IEnumerable< MyApp.Models.OrderDetail> 
@foreach(Model中的var item)
{
< tr>

< td align =center>
@ Html.DisplayFor(modelItem => item.OrderId)
< / td>

< td>
@ Html.DisplayFor(modelItem => item.Order.Username)
< / td>
< td>
@ Html.DisplayFor(modelItem => item.Order.ClientID)
< / td>

< td>
@ Html.DisplayFor(modelItem => item.Order.SiteNumber)
< / td>

< td>
@ {
if(item.Pack == null)
{
@ Html.DisplayFor(modelItem => item.Product.Name)
}
else
{
< text> Pack< / text>
@ Html.DisplayFor(modelItem => item.Pack.Name)
}
}
< / td>

< td>
@if(item.Pack == null)
{
@ Html.DisplayFor(modelItem => item.UnitPrice)
}
else
{
@ Html.DisplayFor(modelItem => item.UnitPricePack)
}
< / td>

< td align =center>
@ Html.DisplayFor(modelItem => item.Quantity)
< / td>

< td>
@ Html.DisplayFor(modelItem => item.Order.Total)
< / td>

< td>
@ Html.DisplayFor(modelItem => item.Order.OrderDate)
< / td>
< / tr>
.....

我在互联网上没有发现除Interface之外没有,但是在我的级别似乎有点复杂,如果我使用它,我必须更改我的所有代码。一个主意 ?我采取所有建议,谢谢你的帮助



这是我的模型:



OrderDetails

  public class OrderDetail 
{
public int OrderDetailId {get;组; }
public int OrderId {get;组; }
public int ProductId {get;组; }
public int PackId {get;组; }
public int数量{get;组; }

[范围(0.00,100000.00)]
public decimal UnitPrice {get;组; }

[范围(0.00,100000.00)]
public decimal UnitPricePack {get;组; }


public virtual Product Product {get;组; }
public virtual Pack Pack {get;组; }
public virtual Order Order {get;组; }

public virtual List< Product>产品{get;组; }
public virtual List< Pack>包{get;组;
}

产品

  public class Product 
{
[ScaffoldColumn(false)]
public int ProductId {get;组; }

[DisplayName(Pack)]
public int PackId {get;组;

[必需(ErrorMessage =blabla)]
[StringLength(160)]
[DisplayName(Nom)]
public string Name {get ;组; }

[DisplayName(Description)]
[StringLength(200)]
public string说明{get;组; }

[必需(ErrorMessage =blabla)]
[范围(0.00,10000.00,ErrorMessage =blabla)]
[DisplayName(Prix)]
public decimal价格{get;组; }

public virtual Pack Pack {get;组; }

public virtual List< OrderDetail> OrderDetails {get;组;
}

和我的包模型

  public class Pack 
{
[ScaffoldColumn(false)]
public int PackId {get;组; }

[DisplayName(blabla)]
public string Name {get;组; }

[DisplayName(blabla)]
public string说明{get;组; }


[必需(ErrorMessage =blabla)]
[范围(0.00,10000.00,ErrorMessage =blabla)]
[DisplayName(Prix )]
public decimal价格{get;组; }

public List< Product>产品{get;组; }
public virtual List< OrderDetail> OrderDetails {get;组; }
}


解决方案

假设你有一个ViewModel像这样

  public class OrderViewModel 
{
public int OrderID {set; get;}
public string UserName {set; get;}
public int UserID {set; get;}
public List< OrderItem>产品{set; get;}
public decimal OrderTotal {set; get;}
}

public class OrderItem
{
public string ProductID {set ; get;}
public string ProductName {set; get;}
public decimal UnitPrice {set; get;}
public int数量{set; get;}
}

现在在您的看法

 code> @model List< OrderViewModel> 
@foreach(模型中的var order)
{
< tr>
< td> @ order.OrderID< / td>
< td> @ order.UserName< / td>
< td>
< ul>
@foreach(var item in order.Products)
{
< li> @ item.ProductName< / li>
}
< / ul>
< / td>
< td>
< ul>
@foreach(var item in order.Products)
{
< li> @ item.Quantity< / li>
}
< / ul>
< / td>
< td>
< ul>
@foreach(var item in order.Products)
{
< li> @ item.UnitPrice< / li>
}
< / ul>
< / td>
< td>
@ order.OrderTotal
< / td>
< / tr>
}


I think it's more easier to visualise with picture than I explain what I want. There is any way to have a table looks like the second one on the picture? Now I've the first, but the problem that I have is that my table is populate dynamically like this :

@model IEnumerable<MyApp.Models.OrderDetail>
@foreach (var item in Model)
{
    <tr>

        <td align="center">
            @Html.DisplayFor(modelItem => item.OrderId)
        </td>

        <td>
         @Html.DisplayFor(modelItem => item.Order.Username)          
        </td>
        <td>
         @Html.DisplayFor(modelItem => item.Order.ClientID)          
        </td>

        <td>
         @Html.DisplayFor(modelItem => item.Order.SiteNumber)          
        </td>   

        <td>
           @{
            if (item.Pack == null)
            {
                   @Html.DisplayFor(modelItem => item.Product.Name) 
            }
            else
            {
                 <text>Pack</text>
                 @Html.DisplayFor(modelItem => item.Pack.Name)
            }
            }    
        </td>

        <td>
            @if (item.Pack == null)
            {
                @Html.DisplayFor(modelItem => item.UnitPrice)
            }
            else
            {
                @Html.DisplayFor(modelItem => item.UnitPricePack)
            }
        </td>

        <td align="center">
            @Html.DisplayFor(modelItem => item.Quantity)
        </td>

        <td>
            @Html.DisplayFor(modelItem => item.Order.Total)
        </td>

        <td>
            @Html.DisplayFor(modelItem => item.Order.OrderDate)
        </td>
    </tr>  
    .....

I found nothing on the internet about that except Interface, but it seems a bit complicated at my level, and I must change all my code if I use it. An idea ? I take all advices, thank you for your help

Here are my models :

OrderDetails

 public class OrderDetail
    {
        public int OrderDetailId { get; set; }
        public int OrderId { get; set; }
        public int ProductId { get; set; }
        public int PackId { get; set; }
        public int Quantity { get; set; }

        [Range(0.00, 100000.00)]
        public decimal UnitPrice { get; set; }

        [Range(0.00, 100000.00)]
        public decimal UnitPricePack { get; set; }


        public virtual Product Product { get; set; }
        public virtual Pack Pack { get; set; }
        public virtual Order Order { get; set; }

        public virtual List<Product> Products { get; set; }
        public virtual List<Pack> Packs { get; set; }
    }

Product

 public class Product
    {
        [ScaffoldColumn(false)]
        public int      ProductId   { get; set; }

        [DisplayName("Pack")]
        public int      PackId      { get; set; }

        [Required(ErrorMessage="blabla")]
        [StringLength(160)]
        [DisplayName("Nom")]
        public string   Name        { get; set; }

        [DisplayName("Description")]
        [StringLength(200)]
        public string   Description { get; set; }

        [Required(ErrorMessage="blabla")]
        [Range(0.00, 10000.00, ErrorMessage="blabla")]
        [DisplayName("Prix")]
        public decimal   Price       { get; set; }

        public virtual Pack     Pack  { get; set; }

        public virtual List<OrderDetail> OrderDetails { get; set; }
    }

and my Pack model

 public class Pack
    {
        [ScaffoldColumn(false)]
        public int      PackId      { get; set; }

        [DisplayName("blabla")]
        public string   Name        { get; set; }

        [DisplayName("blabla")]
        public string   Description { get; set; }


        [Required(ErrorMessage="blabla")]
        [Range(0.00, 10000.00, ErrorMessage="blabla")]
        [DisplayName("Prix")]
        public decimal  Price { get; set; }

        public List<Product> Products { get; set; }
        public virtual List<OrderDetail> OrderDetails { get; set; }
    }

解决方案

Assuming you have a ViewModel like this

public class OrderViewModel
{
  public int OrderID { set;get;}
  public string UserName { set;get;}
  public int UserID { set;get;}
  public List<OrderItem> Products { set;get;}
  public decimal OrderTotal { set;get;}
}

public class OrderItem
{
  public string ProductID { set;get;}
  public string ProductName { set;get;}
  public decimal UnitPrice { set;get;}
  public int Quantity { set;get;}
}

Now in your view

@model List<OrderViewModel>
@foreach(var order in Model)
{
  <tr>
     <td>@order.OrderID</td>
     <td>@order.UserName</td>
     <td>
        <ul>
        @foreach(var item in order.Products)
        {
          <li>@item.ProductName</li> 
        }
        </ul>
     </td>
     <td>
        <ul>
        @foreach(var item in order.Products)
        {
          <li>@item.Quantity</li> 
        }
        </ul>
     </td>
     <td>
        <ul>
        @foreach(var item in order.Products)
        {
          <li>@item.UnitPrice</li> 
        }
        </ul>
     </td>
     <td> 
         @order.OrderTotal
     </td>
 </tr>    
}

这篇关于可以在具有foreach条件的单元格中显示多个项目吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆