0

JavaScript オブジェクトの 1 つをシリアライズして作成された POST 文字列は、Web ページに投稿すると次のようになります。

bikeID=1&vehicleID=23&VIN=1HD1FB416AB666666&slotNum=0&alias=Betsy&BikeCustomizations[0][ CustomizationTypeID] =1&BikeCustomizations[0][ ManufacturerID] =4&BikeCustomizations[0][ CustomizationSubTypeID] =1&BikeCustomizations[1][ CustomizationTypeID] =2&BikeCustomizations[1][ ManufacturerID] =-1

これは私の ASP.NET MVC 3 アプリケーションに投稿されます。基本属性「bikeID」を取得し、アイテムの正しい数BikeCustomizations(この場合は 2) を取得しますが、それらのオブジェクトには値がありません。

POST 文字列を変更して (Fiddler を使用して) 以下に再投稿すると、逆シリアル化は正常に機能します。

bikeID=1&vehicleID=23&VIN=1HD1FB416AB666666&slotNum=0&alias=Betsy&BikeCustomizations[0].CustomizationTypeID=1&BikeCustomizations[0].ManufacturerID=4&BikeCustomizations[0].CustomizationSubTypeID=1&BikeCustomizations[1].CustomizationTypeID=2&BikeCustomizations[1].ManufacturerID=-1

BikeCustomizations[1][ CustomizationTypeID] =2違いがvsであることがわかりますBikeCustomizations[1].CustomizationTypeID=2

質問: オブジェクトの文字列化でファンキーな配列スタイルのプロパティ セッター構文​​を使用しないようにする方法はありますか?

オブジェクト作成の JavaScript は次のとおりです。

Cust.buildBike = function (bikeObj) {
if (bikeObj != undefined)
    this.bike = bikeObj;
else
    this.bike = { bikeID: -1 };

this.bike.BikeCustomizations = new Array();
var that = this;

$.each(this.customizationsArr, function (key, obj) {
    if (obj == undefined)
        return true;

    var typeID = obj.ID,
        SubTypeID = obj.SubTypeID,
        ManufacturerID = obj.ManufacturerID,
        Model = obj.Model;

    if (ManufacturerID == -1)
        SubTypeID = undefined;

    that.bike.BikeCustomizations.push({
        CustomizationTypeID: typeID,
        ManufacturerID: ManufacturerID,
        CustomizationSubTypeID: SubTypeID,
        Model: Model
    });
});

return this.bike;
}

...

$('#customizationPageNext').click(function () {
var data = Cust.buildBike(bikeObj);

$.mobile.changePage('/Selection/Calibrations/', { data: data });
});
4

0 に答える 0