循环模型数据并列出

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>

}