2017-02-18 2 views
0

C#では、私はAPI呼び出しからUIにオブジェクトを渡し、そのオブジェクトのプロパティをビューモデルに自動的にマップします。私はKnockoutのためのマッピングプラグインでこれを行うことを望んでいます。.Netクラスからのノックアウトマッピング

public class MyModel 
    { 
     public int ID { get; set; } 

     [Display(Name ="Debt Name")] 
     [Required(ErrorMessage = "A description is required")] 
     public string Description { get; set; } 

    } 

これは、APIコール(WebAPI)からUIに渡すモデルの簡略化されたバージョンです。私のViewModelの外だ

class Model { 
    id: KnockoutObservable<number>; 
    description: KnockoutObservable<string>; 
} 

はJavaScriptで、私は私が移入するクラスを定義しています。

私のビューモデルでは、私はモデルオブジェクトを作成し、私のコンストラクタでは、マッピングを使用してクラスを生成しようとします。あなたは私の作品コメントアウトマニュアルのバージョンを見ることができますが、私は離れているから行くことにしようとしている:

class DebtViewModel { 

    model: Model = new Model(); 

    constructor() { 

     //this.model.id = ko.observable(0); 
     //this.model.description = ko.observable(""); 

     $.get("/api/debt/1") 
      .done((data) => { 

       this.model = ko.mapping.fromJSON(data); 

       //this.model.id(data.ID); 
       //this.model.description(data.Description); 
    }); 

しかし、マッピングが動作するようには思えません。エラーは出ませんが、モデルは空の関数のようです。

これはできますか?私は間違って何をしていますか?

+0

「データ」はどのように見えますか?おそらくマッピングプラグインで解析中に問題が発生している可能性があります。 –

答えて

0

私はあなたが.fromJSに.fromJSONから切り替えるとノックアウトの3つのパラメータ法を使用する必要がありますと信じて、このanswer

$(function() { 
    var jsonModel = '@Html.Raw(JsonConvert.SerializeObject(this.Model))'; 
    var mvcModel = ko.mapping.fromJSON(jsonModel); 

    var myViewModel = new viewModel(); 
    var g = ko.mapping.fromJS(myViewModel, mvcModel); 

    ko.applyBindings(g); 
}); 
0

から例えば@Html.Raw(JsonConvert.SerializeObject(this.Model))

を使用してJSONにあなたのビューモデルをシリアル化マッピングAPI:

ko.mapping.fromJS(data, {}, this.model); 
関連する問題