从对象列表中访问数据会导致属性未定义
本文关键字:属性 未定义 数据 对象 列表 访问 | 更新日期: 2023-09-27 17:49:25
嗨,我已经创建了一个对象列表,当我试图访问属性时,我得到一个错误,说对象不包含该属性的定义。下面是我的代码:
这是我创建对象列表的地方:
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的定义。我哪里做错了?
您不应该返回List<object>
,您应该使用更具体的类型,例如List<ProductData>
。
如果这个类不存在,就写出来
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>
}