循环模型数据并列出
Loop model data and list it out
我正在尝试循环访问模型对象中传递给我的视图的数据。我想列出每个模型属性的属性名称和属性值,即使它们为空。我已经在这上面待了几个小时,并尝试用谷歌搜索它,但找不到任何有效的好例子。
我得到这个是为了列出当前对象的所有属性,但是无法获取值:
@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);
我可以做一个断点并查看每个对象中的所有数据,但是我无法在屏幕上打印出来。
首先,您得到的 属性 值不正确。您应该从您拥有的对象中获取值,而不是从 属性 的类型中获取值:
value = obj.GetType().GetProperty(property.Name).GetValue(obj, null)
其次,尝试只循环非空数据:
@foreach (var obj in Model.Where(w => w != null))
尝试从 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>
}
我正在尝试循环访问模型对象中传递给我的视图的数据。我想列出每个模型属性的属性名称和属性值,即使它们为空。我已经在这上面待了几个小时,并尝试用谷歌搜索它,但找不到任何有效的好例子。
我得到这个是为了列出当前对象的所有属性,但是无法获取值:
@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);
我可以做一个断点并查看每个对象中的所有数据,但是我无法在屏幕上打印出来。
首先,您得到的 属性 值不正确。您应该从您拥有的对象中获取值,而不是从 属性 的类型中获取值:
value = obj.GetType().GetProperty(property.Name).GetValue(obj, null)
其次,尝试只循环非空数据:
@foreach (var obj in Model.Where(w => w != null))
尝试从 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>
}