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 に答える