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