gpt4 book ai didi

asp.net-mvc - 将 javascript 对象作为字典传输到 Controller 操作中

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

有没有办法传递这个javascript对象

Object { 35=true, 179=true, 181=true}

作为 Controller Action

Dictionary<int, bool>

我检查了以下方法:

    var remoteUrl = "@Url.Action("UpdateProjectStructureSelection")" + "?tlpId=@Model.TopLevelProjectId";
$.post(remoteUrl, mapSiteSelectionChoices, function(callbackResult) {
alert(callbackResult);
});

    var remoteUrl = "@Url.Action("UpdateProjectStructureSelection")" + "?tlpId=@Model.TopLevelProjectId";
$.post(remoteUrl, { values : mapSiteSelectionChoices }, function(callbackResult) {
alert(callbackResult);
});

但是在这两种情况下

public ActionResult UpdateProjectStructureSelection(int tlpId, Dictionary<int, bool> values)

已被调用,但值为空。

由于我已经将更复杂的类型转移到 Controller 操作中而没有编写自定义模型绑定(bind)器,所以我一直在想我是否只是在这里做错了什么。

自定义模型 Binder 是将其作为字典获取的唯一方法吗? (除了在客户端使用 JsonConvert + stringify)

添加(这可行,但我想避免额外的代码):

    public ActionResult UpdateProjectStructureSelection(int tlpId, string values)
{
var dict = JsonConvert.DeserializeObject<Dictionary<int, bool>>(values);
}

最佳答案

不适用于该格式的对象。它需要采用以下格式才能由 DefaultModelBinder

使用
var data = { 'dict[0].key': '35', 'dict[0].value': 'True', 'dict[1].key': '179', 'values[1].value': 'True', dict[0].key': '8', 'dict[0].value': 'True' };
$.post(remoteUrl, data, function(callbackResult) {

和 Controller

public ActionResult UpdateProjectStructureSelection(Dictionary<int, bool> dict)

如您所述,另一种选择是使用自定义 ModelBinder,例如 this answer

关于asp.net-mvc - 将 javascript 对象作为字典传输到 Controller 操作中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28297075/

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