0

嗨,我创建了一个对象列表,当我尝试访问属性时,我收到一条错误消息,指出该对象不包含该属性的定义。这是我的代码:

这是我创建对象列表的地方:

public List<object> returnProductData(SetProduct product)
    {
        List<object> productData = new List<object>();

        var type = product.GetType();
        var properties = type.GetProperties();

        foreach (var propertyInfo in properties)
        {
            if( propertyInfo.GetValue(product , null) != null && propertyInfo.Name != "ProductName" &&
                propertyInfo.Name != "Brand" && propertyInfo.Name != "ProductPrice" && propertyInfo.Name != "ProductImagePath" )
            {
                productData.Add(new { propertyName = propertyInfo.Name , propertyValue = propertyInfo.GetValue(product , null).ToString()}) ;
            }
        }

        return productData;
    } 

这是我尝试访问它的地方:

@foreach( var productData in ion)
            {
                <li>@productData.propertyName</li>
            }

当我尝试访问它时,它说该对象不包含 propertyName 的定义。我在这里做错了什么?

4

2 回答 2

2

您不应该返回List<object>您应该使用更具体的类型,例如List<ProductData>.

如果该类不存在,则编写它。

于 2012-12-25T14:18:09.727 回答
1

object没有propertyName财产。

如果所描述的场景非常必要,并且如果您使用 .net 4.0 或更高版本,则可以dynamic这样使用:

public List<dynamic> returnProductData(SetProduct product)
    {
        List<dynamic> productData = new List<dynamic>();

        var type = product.GetType();
        var properties = type.GetProperties();

        foreach (var propertyInfo in properties)
        {
            if( propertyInfo.GetValue(product , null) != null && propertyInfo.Name != "ProductName" &&
                propertyInfo.Name != "Brand" && propertyInfo.Name != "ProductPrice" && propertyInfo.Name != "ProductImagePath" )
            {
                productData.Add(new { propertyName = propertyInfo.Name , propertyValue = propertyInfo.GetValue(product , null).ToString()}) ;
            }
        }

        return productData;
    } 

用法:

@foreach( var productData in ion)
            {
                <li>@productData.propertyName</li>
            }
于 2012-12-25T14:19:19.523 回答