您好我已创建了一个对象列表,当我尝试访问这些属性时,我收到一条错误消息,指出该对象不包含该属性的定义。这是我的代码:
这是我创建对象列表的地方:
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的定义。我在这里做错了什么?
答案 0 :(得分:2)
您不应该返回List<object>
您应该使用更具体的类型,例如List<ProductData>
。
如果该类不存在则写入。
答案 1 :(得分: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>
}