我正在尝试遍历在模型对象中传递给我的视图的数据。我想列出每个模型属性的属性名称和属性值,即使它们为null。我已经在这里呆了几个小时,并尝试使用谷歌搜索,但无法得到任何有用的好例子。
我得到了这个列出当前对象的所有属性,但无法获取值:
@model List<object>
@foreach (var obj in Model)
{
var properties = obj.GetType().GetProperties();
foreach (var property in properties)
{
string name = null;
var value = ""
try
{
name = property.Name;
value = property.GetType().GetProperty(property.Name).GetValue(property, null).ToString();
}
catch (Exception e)
{
<p>@e</p>
}
finally
{
<p>@name - @value</p>
}
}
控制器代码:
RootobjectPlayerData obj = JsonConvert.DeserializeObject<RootobjectPlayerData>(jsonstring);
List<object> list = new List<object>();
list.Add(obj.data.accountinfo);
list.Add(obj.data.accountinfo.statistics);
list.Add(obj.data.accountinfo.statistics.clan);
list.Add(obj.data.accountinfo.statistics.company);
list.Add(obj.data.accountinfo.statistics.all);
list.Add(obj.data.accountinfo.statistics.historical);
list.Add(obj.data.accountinfo.statistics.team);
return View(list);
我可以做一个断点并查看每个对象中的所有数据,但是我无法在屏幕上打印出来。
答案 0 :(得分:1)
首先,您错误地获取了属性值。您应该从您拥有的对象获取值,而不是从属性的类型中获取值:
value = obj.GetType().GetProperty(property.Name).GetValue(obj, null)
其次,尝试仅通过非空的数据循环:
@foreach (var obj in Model.Where(w => w != null))
答案 1 :(得分:0)
尝试从i
获取值,而不是x
。
try
{
name = x.Name;
// Wrong
// value = x.GetType().GetProperty(x.Name).GetValue(x, null).ToString();
// Correct
value = x.GetValue(i, null).ToString();
}
catch (Exception e)
{
<p>@e</p>
}