gpt4 book ai didi

javascript - 使用 json 将对象数组传递给 mvc Controller

转载 作者:行者123 更新时间:2023-12-03 05:57:13 25 4
gpt4 key购买 nike

我尝试将 Json 数据绑定(bind)到 MVC 中的属性类。对象 2 已传入 Controller OK。对象 3 是一个列表列表,我不确定我的数据结构在 JavaScript 中是否正确。

我收到了 BlockEntrances 数据(数组大小),但没有收到 BlockEntranceButtons 数据。

当我认为“BlockEntranceButtons”应该出现在 Json 字符串中时,它却没有出现。

有人可以给我指出正确的方向吗?

编辑:

将步骤 3 更改为 2 个对象。 Json 字符串看起来更像我想要的,但我的 Controller 仍然收到空值。

Javascript:

Step2 = {};
Step2.MainEntranceButtons = [0, 1, 2, 3, 4, 5, 6, 7, 8]

Step3 = {};
Step3.BlockEntrances = {};
Step3.BlockEntrances.BlockEntranceButtons = [];
Step3.BlockEntrances.BlockEntranceButtons[0] = [1, 2, 3, 4, 5, 6, 7, 8];
Step3.BlockEntrances.BlockEntranceButtons[1] = [8, 7, 6, 5, 4, 3, 2, 1];
Step3.BlockEntrances.BlockEntranceButtons[2] = [5, 5, 5, 5, 5, 5, 5, 5];


var StringToPost = JSON.stringify({ Step2Object: Step2, Step3Object: Step3 });

$.ajax({
url: "/Home/CollectJson1/",
type: 'POST',
contentType: "application/json",
dataType: 'html',
data: StringToPost,
success: function (data) {
console.log(data);
}
});

Controller :

<HttpPost>
Function CollectJson1(ByVal Step2Object As Step2Data, ByVal Step3Object As Step3Data) As JsonResult

Return Json(Step3Object)

End Function

类(class):

Public Class Step2Data

Public Property MainEntranceButtons As List(Of String)

End Class

Public Class Step3Data

Public Property BlockEntrances As List(Of Step3SubData)

End Class


Public Class Step3SubData

Public Property BlockEntranceButtons As List(Of String)

End Class

为 Object3 发布的 Json 数据:

{"Step3Object":{"BlockEntrances":{"BlockEntranceButtons":[[1,2,3,4,5,6,7,8],[8,7,6,5,4,3,2,1],[5,5,5,5,5,5,5,5]]}}}

最佳答案

数组索引没有名称,因此它不会按照您在问题的原始版本中预期的方式工作。如果他们这样做了,你就会有 3 个名为 BlockEntranceButtons 的按钮。你如何区分它们?

您现在拥有的与我认为更合适的类似:

Step3.BlockEntrances =  [  
{ EntranceID: 1, BlockEntranceButtons: [1,2,3,4,5,6,7,8] },
{ EntranceID: 2, BlockEntranceButtons: [8,7,6,5,4,3,2,1] },
{ EntranceID:3, BlockEntranceButtons: [5,5,5,5,5,5,5,5] }
];

您想要做的事情与服务器端代码结构并不真正匹配,并且该结构在我看来有点困惑。

如果是我,我会将所有入口视为相同,只用一个标志来说明它是主入口还是街区入口。那么你不需要为每个单独的数据结构。也许是这样的(记住我不知道你的确切要求):

JS:

var Entrances =  [  
{ EntranceID: 1, BlockID: "main", EntranceButtons: [0,1,2,3,4,5,6,7,8] },
{ EntranceID: 2, BlockID: "A", EntranceButtons: [8,7,6,5,4,3,2,1] },
{ EntranceID: 3, BlockID: "A", EntranceButtons: [9,5,1,7,3,4,2,1] },
{ EntranceID: 4, BlockID: "B", EntranceButtons: [5,5,5,5,5,5,5,5] }
];

VB:

Public Class Entrance
public Property EntranceID As Int
public Property BlockID As String
public Property EntranceButtons As Int()
End Class

<HttpPost>
Function CollectJson1(ByVal Entrances As List(Of Entrance)) As JsonResult

Return Json(Entrances)

End Function

如果有必要,您可能最终会得到一个名为 Block 的类来表示不同的 block ,并带有 ID 和描述。

关于javascript - 使用 json 将对象数组传递给 mvc Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39876073/

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