使用AJAX检索发送到控制器操作的数据(关联数组)

时间:2016-03-31 15:48:57

标签: c# ajax asp.net-mvc-4 serialization

我尝试在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; }
}

但结果总是一个空数组,我无法检索到正确的数据。

有什么问题?

1 个答案:

答案 0 :(得分:1)

您的代码至少存在一个问题:dataType不是您发送到服务器的类型,而是您期望从服务器返回的内容。

您必须指定contentType才能让服务器知道您要向其发送的数据类型:

contentType: "application/json; charset=utf-8"

此外,您可能需要更改

data: { fieldsEdited: JSON.stringify(fieldsEdited) },

data: JSON.stringify(fieldsEdited),

甚至只是

data: fieldsEdited
相关问题