0

使用 Orchard 1.6 MVC,我想在屏幕上显示“供应商”列表。对于每个供应商,显示他们的产品列表和剩余数量。

Supplier 1
product 101
product 102

supplier 2
product 103
product 104
product 105

etc...

我的视图模型

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] 有一些无效的论点。

4

2 回答 2

1

如果我错了,请纠正我,但根据我的理解,您正在尝试显示

  1. ProductCode它在QBProductRecord类中,并且此类被用作ProductId模型类中字典的一部分(其中使用的键是 )SuppliersOrderVM
  2. Quantity这是类中的一个属性Product

那么你应该使用下面的代码。您的代码中的错误是您试图product.Products用作索引,它应该是一个整数,但它不是。

@{
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 supplier.Products)
    {
            //create table and output product code & product Quantity
<div class="editor-label">@Model.Products[product.ProductId].ProductCode</div>
           //display quantity
<div class="editor-label">product.Quantity</div>
于 2013-07-22T16:27:17.607 回答
0

这条线是什么意思?:

Model.Products[product.Products]

如果我正确地遵循您的模型层次结构,ModelSuppliersOrderVM. 这意味着这Model.ProductsDictionary<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>

很难准确地说出您要做什么。模型层次结构有点尴尬,有很多东西叫做“产品”。

于 2013-07-22T15:59:04.780 回答