将名称值对数组作为字典传递给控制器
我在Javascript中有一个名称值对数组(就像form.SerializeArray()),我想传递给我的控制器并将其作为字典对象列表接收。
可能吗 ? 如果是这样,我如何传递对象?
谢谢
编辑
这是我要传递的JS对象
var ct = $('#frmrpt').serializeArray(); url="MyController/Print"; var vhtml = ""; $('#repo').html(vhtml);
以下是我想如何在控制器上接收它
public ActionResult Print( List<Dictionary> prms)
我使用类似下面的内容来反序列化json字符串
public static T DeserializeJSON(string jsonData) { if (!string.IsNullOrEmpty(jsonData)) { //jsonData = jsonData.Replace('"', ' '); var serializer = new JavaScriptSerializer(); return serializer.Deserialize(jsonData); } return default(T); }
您可以使用json.net反序列化您的集合。
控制器:
[HttpPost] [Authorize] [JsonFilter(Param = "data", JsonDataType = typeof(Dictionary))] public ActionResult Add(Dictionary data) { }
客户:
$.ajax({ type: 'POST', url: url, async: true, data: JSON.stringify(data), dataType: 'json', contentType: 'application/json; charset=utf-8', success: function (data) { }, error: function (xhr, ajaxOptions, thrownError) { } });