我在Javascript中有一个名称值对数组(就像form.SerializeArray()),我想传递给我的控制器并将其作为字典对象列表接收。
有可能吗?如果是这样,我如何传递该物体?
由于
修改
这是我要传递的JS对象
var ct = $('#frmrpt').serializeArray();
url="MyController/Print";
var vhtml = "<iframe src=" + url + " style='width: 100%; height: 100%' ></iframe>";
$('#repo').html(vhtml);
以下是我想如何在控制器上接收它
public ActionResult Print( List<Dictionary<string, object>> prms)
我使用类似下面的内容来反序列化json字符串
public static T DeserializeJSON<T>(string jsonData)
{
if (!string.IsNullOrEmpty(jsonData))
{
//jsonData = jsonData.Replace('"', ' ');
var serializer = new JavaScriptSerializer();
return serializer.Deserialize<T>(jsonData);
}
return default(T);
}
答案 0 :(得分:3)
您可以使用json.net反序列化您的收藏。
控制器:
[HttpPost]
[Authorize]
[JsonFilter(Param = "data", JsonDataType = typeof(Dictionary<string,string>))]
public ActionResult Add(Dictionary<string, string> 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) {
}
});