gpt4 book ai didi

c# - 将数组作为 JSON 发布到 MVC Controller

转载 作者:可可西里 更新时间:2023-11-01 03:06:54 26 4
gpt4 key购买 nike

我一直在努力寻找解决这个问题的方法。

在我的代码中,我正在构建一个对象数组;

var $marks = [];

var mark = function ( x, y, counter ){
this.x = x;
this.y = y;
this.counter = counter;
}

$marks.push(new mark(1, 2, 0));
$marks.push(new mark(1, 2, 1));
$marks.push(new mark(1, 2, 2));

现在我想将此数据发布到 MVC Controller ,所以我认为 Controller 中的数据类型应该是 List<Mark> Marks或一组标记。

为了发布数据,我试过了;

var json = JSON.stringify($marks);
$.post('url', json).done(function(data){ /* handle */ });

var json = { Marks: $marks };
$.post('url', json).done(function(data){ /* handle */ });

第二种方式,当查看发布的数据时,看起来像这样

Marks[0][x]: 1
Marks[0][y]: 2
Marks[0][counter]: 0
Marks[0][x]: 1
Marks[0][y]: 2
Marks[0][counter]: 1
Marks[0][x]: 1
Marks[0][y]: 2
Marks[0][counter]: 2

但我不确定如何将其转换为 Controller 中的强类型对象?

我的 Controller 看起来像这样;

[HttpPost]
public ActionResult JsonSaveMarks(List<Mark> Marks){
// handle here
}

我的 Mark 类看起来像这样;

public class Mark{
public string x { get; set; }
public string y { get; set; }
public string counter { get; set; }
}

我已经阅读了有关创建自定义的其他类似问题 JsonFilterAttribute ,或使用 System.Web.Script.Serialization.JavaScriptSerializer上课,但我什么也做不了

我在这里明显遗漏了什么吗?我在 Controller 中的数据类型是否完全错误?如何将发布的这些数据转换为强类型对象?

非常感谢

最佳答案

$.post() 不允许您设置 AJAX 调用的内容类型 - 您可能会发现(如果您使用 Fiddler)您的 Json 字符串与内容一起发送 - “application/x-www-form-urlencoded”类型(默认设置)会导致 Asp.Net MVC 错误地解释您的数据包。

您可以尝试使用 $.ajax() 并将内容类型设置为“application/json”吗?

http://api.jquery.com/jQuery.ajax/

关于c# - 将数组作为 JSON 发布到 MVC Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10007722/

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