ビューモデルが IIS で JSON に変換されないという非常に奇妙な問題が発生しています。システムで同じコードをデバッグすると、問題なく動作し、viewmodesl が JSON に変換されます。IIS では、同じコードが同じ結果を生成しません。
これは、ビューモデルで ko.toJSON を呼び出した後のビューモデルの外観です。
IIS の場合:
"{"__ko_mapping__":{"ignore":[],"include":["_destroy"],"copy":[],"mappedProperties": {"__type":true,"Prop1":true,"Prop2":true,"Prop3":true,"Prop4":true,"Prop5":true}}}"
ローカルで
{"__type":"DealerModel","Prop1":"","Prop2":"","Prop3":"","Prop4":"","Prop5":"Some Name ltd"}}}"
これは私の DealerModel クラスがどのように見えるかです:
[Serializable]
Public class DealerModel
{
public string Porp1 { get; set; }
public string Porp2 { get; set; }
public string Porp3 { get; set; }
public string Porp4 { get; set; }
public string Porp5 { get; set; }
}
問題は、どうにかして DealerModel が JSON などに型として渡されていないことだと思います。
誰もこの問題に直面しましたか? ここで何が問題になる可能性がありますか?
これは、viewmodesl を JS に変換する方法です。サーバー側のメソッドは arraylist を想定しています。
var jsonViewModel = '';
jsonViewModel = ko.toJSON(myNameSpace.ViewModel1);
jsonViewModel = jsonViewModel.replace(/\/Date\((.*?)\)\//gi, "new Date($1)");
saveArray[0] = jsonViewModel
jsonViewModel = ko.toJSON(myNameSpace.ViewModel2);
jsonViewModel = jsonViewModel.replace(/\/Date\((.*?)\)\//gi, "new Date($1)");
saveArray[1] = jsonViewModel
$.ajax({
type: "POST",
url: "Services/SomeService.asmx/SaveObjects",
cache: true,
contentType: "application/json; charset=utf-8",
data:"{args:" + ko.toJSON(saveArray) + "}",
dataType: "json"
});
SaveObjects メソッドは arrayList を想定しています。