将名称值对数组传递给控制器​​作为字典

时间:2012-07-23 07:21:28

标签: jquery asp.net-mvc

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

1 个答案:

答案 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) {

        }
    });