0

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

1 回答 1

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

        }
    });
于 2012-07-23T08:13:53.927 回答