gpt4 book ai didi

c# - AJAX POST 复杂 JSON 到 MVC4 Controller

转载 作者:行者123 更新时间:2023-11-30 22:13:36 25 4
gpt4 key购买 nike

我有一个复杂的 JSON 对象,我想将其传递给 MVC4 Controller 路由。

{
"name": "Test",
"description": "Description",
"questions": [
{
"id": "1",
"type": "1",
"text": "123",
"answers": [
{
"answer": "123",
"prerequisite": 0
},
{
"answer": "123",
"prerequisite": 0
}
],
"children": [
{
"id": "2",
"type": "2",
"text": "234",
"answers": [
{
"answer": "234",
"prerequisite": 0
},
{
"answer": "234",
"prerequisite": 0
}
],
"children": []
}
]
}
]

我定义了这些 ViewModel:

public class FormDataTransformContainer
{
public string name { get; set; }
public string description { get; set; }
public QuestionDataTransformContainer[] questions;
}

public class QuestionDataTransformContainer {
public int type { get; set; }
public string text { get; set; }
public AnswerDataTransformContainer[] answers { get; set; }
public QuestionDataTransformContainer[] children { get; set; }
}

public class AnswerDataTransformContainer {
public string answer { get; set; }
public int prerequisite { get; set; }
}

这是我要走的路线:

    [HttpPost]
public ActionResult Create(FormDataTransformContainer formData)
{

当前,已设置 FormDataTransformContainer 上的名称和描述属性,但问题数组为空。我希望数据绑定(bind)能够解决这个问题,但我认为数据结构的树形性质对它来说有点复杂。如果我是对的,最好的解决方案是什么?

最佳答案

questions应该是一个属性,而不是一个字段。我也会从数组更改为 IList<> (假设您的序列化库处理得很好),因为这可能更接近它应该的样子,并且让您可以使用更通用的接口(interface)而不是特定的实现。

public class FormDataTransformContainer
{
public string name { get; set; }
public string description { get; set; }
public IList<QuestionDataTransformContainer> questions { get; set; }
}

public class QuestionDataTransformContainer {
public int type { get; set; }
public string text { get; set; }
public IList<AnswerDataTransformContainer> answers { get; set; }
public IList<QuestionDataTransformContainer> children { get; set; }
}

public class AnswerDataTransformContainer {
public string answer { get; set; }
public int prerequisite { get; set; }
}

我已经使用 Json.net(我相信是 MVC4 的默认设置)测试了这个结构,并且它有效。

关于c# - AJAX POST 复杂 JSON 到 MVC4 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18967249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com