将动态元素添加到.NET mvc中的现有模型中

时间:2019-07-02 05:52:13

标签: c# asp.net .net json model-view-controller

我正在建立一个仪表板(在.NET MVC项目中),该仪表板基本上是通过api接收数据并在(某种程度上)精美的视图中显示数据的。

我收到的数据以json格式格式化,并且我知道“ root”的格式(不确定json时这是否是正确的术语,请随时纠正我)。 >

{
response : 
  {
  fields :
    [{
      name : name1,
     },
     {
      name : name2,
     },
     ...
    ],
  results :
    [{
      name1 : value1,
      name2 : value2
     },
     {
      name1 : value3,
      name2 : value4
     },
     ...
    ]
  }
}

如您所见,数组“结果”从一个响应到下一个响应有所不同,名称“ name1”和“ name2”是用户生成的(即不可预测的)。现在,我可以使用此模型反序列化json以提取“字段”数组及其值:

namespace WebApplication1.Models
{
    public class Field
    {
        public string name { get; set; }
    }

    public class Result
    {
    }
    public class JsonResponse
    {
        public List<Field> fields { get; set; }
        public List<Result> results { get; set; }
    }
}

我的问题是:

当我将其传递给视图时,“结果”数组中填充了空的“对象”(由于模型中未描述它们,所以感觉很正常)

results: Array(5)
0: {}
1: {}
2: {}
3: {}
4: {}

我的目标是:

我希望能够在将“结果”的正确描述添加到模型之前(可以从“字段”数组中获取),然后再将其传递给视图,以便所有数据在视图中可用。

尝试过的事情:

  1. 将Json作为字符串发送到视图并使用JavaScript进行解析,但这不起作用,因为我们使用模型相关引擎来显示数据

  2. 使用dynamicObj解码json,但是我无法将其传递给视图(因为它不是模型)

  3. 哭泣,但是(令人惊讶的)它也不起作用。

  4. 这可能是我目前忘记的其他事情。

几天来我一直在网上寻找解决方案,但我感到绝望,欢迎任何想法。

谢谢!

1 个答案:

答案 0 :(得分:0)

因此,对于以后寻找此功能的任何人,由于找不到解决方案,我最终使用了一种变通方法。

我没有动态模型,而是重新编写了“ Result”类,如下所示:

    public class Result
    {
        public List<KeyValuePair<string, string>> values { get; set; }
    } 

当我从API接收数据时可以填写。

它使视图中的数据处理更加烦人,但实际上还不错。

P.s。我没有将其标记为答案,因为这只是一个不错的解决方法