循环模型数据并列出来

时间:2015-01-04 10:53:32

标签: c# asp.net-mvc json.net

我正在尝试遍历在模型对象中传递给我的视图的数据。我想列出每个模型属性的属性名称和属性值,即使它们为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);

我可以做一个断点并查看每个对象中的所有数据,但是我无法在屏幕上打印出来。

2 个答案:

答案 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>

}