我尝试在AJAX中POST一个表单,其中一个参数是一个关联数组。 我可以在Console中检查请求是否正常,参数是否正确发送。
这是AJAX电话
var fieldsEdited = [{"Key":1,"Values":["value1"]},{"Key":2,"Values":["value2"]}, ...]
$.ajax({
url: "/url"
type: 'POST',
data: { fieldsEdited: JSON.stringify(fieldsEdited) },
dataType: 'json',
traditional: true,
success: function (data, textStatus, jqXHR) { }
});
但我无法映射"这些参数在控制器的动作中
我试图让他们像那样
[HttpPost]
public ActionResult Method(List<DictionaryInfos> fieldsEdited)
与
[Serializable]
public class DictionaryInfos
{
public int Key { get; set; }
public List<String> Values { get; set; }
}
但结果总是一个空数组,我无法检索到正确的数据。
有什么问题?
答案 0 :(得分:1)
您的代码至少存在一个问题:dataType
不是您发送到服务器的类型,而是您期望从服务器返回的内容。
您必须指定contentType
才能让服务器知道您要向其发送的数据类型:
contentType: "application/json; charset=utf-8"
此外,您可能需要更改
data: { fieldsEdited: JSON.stringify(fieldsEdited) },
到
data: JSON.stringify(fieldsEdited),
甚至只是
data: fieldsEdited