【问题标题】:Add dynamic elements to an already existing model in .NET mvc将动态元素添加到 .NET mvc 中的现有模型
【发布时间】:2019-11-12 17:25:54
【问题描述】:

我正在构建一个仪表板(在 .NET MVC 项目中),它基本上通过 api 接收数据并将其显示在(有点)花哨的视图中。

我收到的数据是 json 格式的,并且我知道“根”的格式(不确定这是否是谈论 json 时的正确术语,请随时纠正我),这就是这些方面的内容:

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

如您所见,数组“results”从一个响应到另一个响应各不相同,名称“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. 可能我现在忘记了其他一些事情。

我已经在网上搜寻了几天的解决方案,我越来越绝望,欢迎任何想法。

谢谢!

【问题讨论】:

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


    【解决方案1】:

    因此,对于将来寻找此问题的任何人,我最终使用了一种解决方法,因为我没有找到解决此问题的方法。

    我没有使用动态模型,而是重写了“结果”类,如下所示:

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

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

    它使视图中的数据处理稍微有点烦人,但它真的没那么糟糕。

    附:我没有将此标记为答案,因为它只是一个很好的解决方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-15
      • 2011-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 2017-12-12
      • 1970-01-01
      相关资源
      最近更新 更多