Database 是否可以在具有foreach条件的单元格中显示多个项目?
我认为用图片来形象化比我解释我想要什么更容易有没有办法让表看起来像图片上的第二个表?现在我有了第一个,但问题是我的表是这样动态填充的:Database 是否可以在具有foreach条件的单元格中显示多个项目?,database,asp.net-mvc-3,database-design,Database,Asp.net Mvc 3,Database Design,我认为用图片来形象化比我解释我想要什么更容易有没有办法让表看起来像图片上的第二个表?现在我有了第一个,但问题是我的表是这样动态填充的: @model IEnumerable<MyApp.Models.OrderDetail> @foreach (var item in Model) { <tr> <td align="center"> @Html.DisplayFor(modelItem => item.
@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>
.....
@model IEnumerable
@foreach(模型中的var项目)
{
@DisplayFor(modelItem=>item.OrderId)
@DisplayFor(modelItem=>item.Order.Username)
@DisplayFor(modelItem=>item.Order.ClientID)
@DisplayFor(modelItem=>item.Order.SiteNumber)
@{
如果(item.Pack==null)
{
@DisplayFor(modelItem=>item.Product.Name)
}
其他的
{
包裹
@DisplayFor(modeleItem=>item.Pack.Name)
}
}
@如果(item.Pack==null)
{
@DisplayFor(modelItem=>item.UnitPrice)
}
其他的
{
@DisplayFor(modelItem=>item.UnitPricePack)
}
@DisplayFor(modelItem=>item.Quantity)
@DisplayFor(modelItem=>item.Order.Total)
@DisplayFor(modelItem=>item.Order.OrderDate)
.....
除了界面,我在网上找不到任何关于它的信息,但在我这个级别上它似乎有点复杂,如果我使用它,我必须更改我的所有代码。主意?我接受所有建议,谢谢你的帮助
以下是我的模型:
订单详情
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; }
}
public类OrderDetail
{
public int OrderDetailId{get;set;}
公共int-OrderId{get;set;}
public int ProductId{get;set;}
public int PackId{get;set;}
公共整数数量{get;set;}
[范围(0.00,100000.00)]
公共十进制单价{get;set;}
[范围(0.00,100000.00)]
公共十进制单价包{get;set;}
公共虚拟产品产品{get;set;}
公共虚拟包{get;set;}
公共虚拟订单{get;set;}
公共虚拟列表产品{get;set;}
公共虚拟列表包{get;set;}
}
产品
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; }
}
公共类产品
{
[脚手架立柱(假)]
public int ProductId{get;set;}
[显示名称(“包装”)]
public int PackId{get;set;}
[必需(ErrorMessage=“blabla”)]
[长度(160)]
[显示名称(“名称”)]
公共字符串名称{get;set;}
[显示名称(“说明”)]
[长度(200)]
公共字符串说明{get;set;}
[必需(ErrorMessage=“blabla”)]
[范围(0.00,10000.00,ErrorMessage=“blablabla”)]
[显示名称(“Prix”)]
公共十进制价格{get;set;}
公共虚拟包{get;set;}
公共虚拟列表OrderDetails{get;set;}
}
还有我的背包模型
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; }
}
公共类包
{
[脚手架立柱(假)]
public int PackId{get;set;}
[显示名称(“blabla”)]
公共字符串名称{get;set;}
[显示名称(“blabla”)]
公共字符串说明{get;set;}
[必需(ErrorMessage=“blabla”)]
[范围(0.00,10000.00,ErrorMessage=“blablabla”)]
[显示名称(“Prix”)]
公共十进制价格{get;set;}
公共列表产品{get;set;}
公共虚拟列表OrderDetails{get;set;}
}
假设您有这样一个ViewModel
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;}
}
公共类OrderViewModel
{
公共int-OrderID{set;get;}
公共字符串用户名{set;get;}
public int UserID{set;get;}
公共列表产品{set;get;}
公共十进制OrderTotal{set;get;}
}
公共类OrderItem
{
公共字符串ProductID{set;get;}
公共字符串产品名称{set;get;}
公共十进制单价{set;get;}
公共整数数量{set;get;}
}
现在在你看来
@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(模型中的var顺序)
{
@order.OrderID
@order.UserName
@foreach(订单产品中的var项目)
{
- @item.ProductName
}
@foreach(订单产品中的var项目)
{
- @项目数量
}
@foreach(订单产品中的var项目)
{
- @项目。单价
}
@order.OrderTotal
}
我尝试了一些方法,但总是出现错误CS1061或CS1579此时,我还有另一个错误。列名无效[Node name(如果有)=Extent1,Column name=Pack\u PackId]。这是第一个foreach:@foreach(模型中的var项)。我的视图代码用于我定义的ViewModel。看起来您使用的是不同的模型(可能与实体框架中的域模型相同)。创建一个viewmodel并将域模型值映射到该模型,然后在视图中使用它。我必须在单个viewmodel中重新定义我在模型中定义的所有数据?或者执行类似操作:在此viewmodel中定义一些公共列表ODetails(get set)//公共列表Prod(get set)//列表包(get set)
。它有点模糊。ViewModel应该具有视图真正需要的属性。而不是域模型中的所有属性。