2011-11-11 76 views
3

我跟着http://blog.stevensanderson.com/2010/07/12/editing-a-variable-length-list-knockout-style/文章使用ko.utils.postJson從控制器knockoutjs與ko.utils.postJson問題提交

我以前ko.utils.postJson(location.href, {model: ko.toJson(viewModel)});提交的數據,但提交的模型提交數據並導航到不同的視圖到服務器有空屬性。

ko.utils.postJson(location.href, {model: viewModel});也失敗了。

客戶視圖模型比服務器模型的附加屬性,但我相信,如果它與$ AJAX POST方法有效,那它就應該KO崗位工作

它的工作,如果我通過模型下

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

我必須在提交前映射每個屬性嗎?它也確實迷惑時使用()的視圖模型性能

服務器代碼

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

回答

5

淘汰賽提供了一個實用的功能,將含有轉觀測到一個普通的JavaScript對象的對象。實用功能是ko.toJS。所以,如果你這樣做:

{ model: ko.toJS(viewModel) } 

然後,它會處理展開你所有的observables。

此外,還有另一個功能ko.toJSON將執行ko.toJS,然後做JSON.stringify的結果。當你真的需要JSON而不是JavaScript對象時,這非常有用。

+0

我會試試看。我相信它會起作用。 –