使用字典在VIEW中显示值

时间:2013-07-22 15:51:51

标签: c# asp.net-mvc razor dictionary orchardcms

使用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]有一些无效的参数。

2 个答案:

答案 0 :(得分:1)

如果我错了,请纠正我,但根据我的理解,你正试图展示

    {li> ProductCode位于QBProductRecord类中,此类用作模型类{{1中的字典的一部分(其中使用的键是ProductId) }}。
  1. SuppliersOrderVM这是类Quantity中的属性。
  2. 然后你应该使用以下代码。您的代码中的错误是您尝试使用Product作为索引,该索引应该是整数但不是。

    product.Products

答案 1 :(得分: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>

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