我按照http://blog.stevensanderson.com/2010/07/12/editing-a-variable-length-list-knockout-style/文章使用ko.utils.postJson提交数据并导航到控制器的不同视图
我使用ko.utils.postJson(location.href, {model: ko.toJson(viewModel)});
提交数据,但提交给服务器的模型具有空属性。
ko.utils.postJson(location.href, {model: viewModel});
也失败了。
客户端viewModel具有除服务器模型之外的其他属性,但我相信如果它与$ ajax post方法一起使用,它应该与KO post一起使用
如果我在
下传递模型,它就有用了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)
{
}
}
答案 0 :(得分:5)
Knockout提供了一个实用程序函数,它将包含observables的对象转换为纯JavaScript对象。效用函数是ko.toJS
。所以,如果你这样做了:
{ model: ko.toJS(viewModel) }
然后,它会处理所有可观察物的展开。
此外,还有另一个函数ko.toJSON
将执行ko.toJS
,然后对结果执行JSON.stringify
。当您真正需要JSON而不是JavaScript对象时,这非常有用。