使用Orchard 1.6 MVC我想在屏幕上显示“供应商”列表。对于每个供应商,显示其产品列表和剩余数量。
Supplier 1
product 101
product 102
supplier 2
product 103
product 104
product 105
etc...
我的ViewModel
public class SuppliersOrderVM
{
public IEnumerable<SupplierInfo> SupplierInformation = new List<SupplierInfo>();
public Dictionary<int, QBSupplierRecord> Suppliers { get; set; }
public Dictionary<int, QBProductRecord> Products { get; set; }
public SuppliersOrderVM(IEnumerable<SupplierInfo> supplierInformation, Dictionary<int, QBSupplierRecord> suppliers, Dictionary<int, QBProductRecord> products)
{
SupplierInformation = supplierInformation;
Suppliers = suppliers;
Products = products;
}
public class SupplierInfo
{
public int SupplierId { get; set; }
public bool SendEmail { get; set; }
public List<ProductInfo> Products = new List<ProductInfo>();
}
public class ProductInfo
{
public int ProductId { get; set; }
public int Quantity { get; set; }
}
}
因此,在视图中,我使用字典输出供应商名称。但我无法为该供应商输出产品。我的第二个foreach循环可能是错误的,我的语法不正确显示产品。 请帮我修改一下
@{
foreach (var supplier in Model.SupplierInformation)
{
<div class="editor-label">@Html.Label("SupplierName")</div>
<div class="editor-label">@Model.Suppliers[supplier.SupplierId].CompanyName</div>
@* <div class="editor-label">@Html.HiddenFor(s => s.SupplierInfor[0].</div>*@
foreach (var product in Model.SupplierInformation)
{
//create table and output product code & product Quantity
<div class="editor-label">@Model.Products[product.Products].ProductCode</div>
它告诉我[product.Products]有一些无效的参数。
答案 0 :(得分:1)
如果我错了,请纠正我,但根据我的理解,你正试图展示
ProductCode
位于QBProductRecord
类中,此类用作模型类{{1中的字典的一部分(其中使用的键是ProductId
) }}。
SuppliersOrderVM
这是类Quantity
中的属性。 然后你应该使用以下代码。您的代码中的错误是您尝试使用Product
作为索引,该索引应该是整数但不是。
product.Products
答案 1 :(得分:0)
这条线意味着什么?:
Model.Products[product.Products]
如果我正确关注您的模型层次结构,Model
是SuppliersOrderVM
的实例。这意味着Model.Products
是Dictionary<int, QBProductRecord>
的实例。要从Dictionary
访问元素,您需要使用int
对其进行索引。但是,product.Products
不是int
,而是List<ProductInfo>
。
您是否要为List<ProductInfo>
添加另一个循环,以便访问其中每个元素的ProductId
属性?像这样的东西?:
foreach (var productInfo in product.Products)
<div class="editor-label">@Model.Products[productInfo.ProductId].ProductCode</div>
很难准确说出你想要做什么。模型层次结构有点尴尬,有很多东西叫做“产品”。