2011-11-11 4 views
3

に提出する私は、データを提出するko.utils.postJson(location.href, {model: ko.toJson(viewModel)});を使用しますが、モデルが提出さko.utils.postJsonを使用してデータを提出し、コントローラから別のビューにknockoutjsがko.utils.postJson問題

をナビゲートするhttp://blog.stevensanderson.com/2010/07/12/editing-a-variable-length-list-knockout-style/記事を追いましたサーバーには空のプロパティがあります。

ko.utils.postJson(location.href, {model: viewModel});も失敗しました。

クライアントのViewModelには、サーバモデルよりも、追加のプロパティがありますが、私はそれが$ AjaxのPOSTメソッドで動作するかどうか、それはKOポストで動作するはずと信じて、私は下のようにモデルを渡す場合、それが働いた

ko.utils.postJson(location.href, 
    {model: {P1:this.p1(), P2:this.p2(), P3: this.p3()}}); 

提出する前に各プロパティをマップする必要がありますか? )するときに使用する(そのも本当に混乱のViewModelのプロパティに

サーバコード

[HttpPost] 
     public ActionResult SearchProperty([FromJson]MyModel model) 
     { 
      try 
      { 
       return View("XYZ", model); 
      } 
      catch (Exception e) 
      { 
      } 
     } 

答えて

5

ノックアウトは、JavaScriptのオブジェクトプレーンに観測を含むオブジェクトをオンにしますユーティリティ関数を提供します。効用関数はko.toJSです。だから、あなたがした場合:

{ model: ko.toJS(viewModel) } 

その後、それはあなたのすべての観測値のアンラップを処理します。

また、ko.toJSを行い、その結果にJSON.stringifyを行います別の関数ko.toJSONあります。これはJavaScriptオブジェクトの代わりにJSONが本当に必要な場合に便利です。

+0

私はそれを試してみましょう。私はそれが動作すると確信しています。 –