JS Object To C# ASP.Net ModelBind

1163 ワード

前にプロジェクトをしていたとき、Jqueryが持っているFormシーケンス化関数を発見しました.asp.Netの中のModelbindingフォーマットが一致しないので、フロントエンドのObjectオブジェクトをModelBinding認識のデータフォーマットにシーケンス化できる関数を書きました.
//     
var serializedObj = function (obj) {
    var arr = [];
    recursiveSerialization(obj, arr, '');
    return arr.join('&');
}
var recursiveSerialization = function (obj, arr, head) {
    if (obj == '' || typeof obj == 'undefined') {
        return;
    }
    if (Array.isArray(obj)) {
        for (var i = 0; i < obj.length; i++) {
            var newhead = head + '[' + i + ']';
            recursiveSerialization(obj[i], arr, newhead);
        }
    }
    else if (typeof obj == 'number' || typeof obj == 'boolean' || typeof obj == 'string') {
        arr.push(head + '=' + obj + '');
    } else {
        for (var key in obj) {
            var newhead
            if (head == "") {
                newhead = key;
            } else {
                newhead = head + '.' + key;
            }
            recursiveSerialization(obj[key], arr, newhead)
        }
    }
}