2011-04-21 117 views
4

我刚看到knockoutjs后看了MIX 11谈话,它看起来很有希望。如何将模型传递给视图?

我可以理解如何将模型作为json传递回控制器并更新/保存模型,但是如何将模型传递给我的视图并使其可观察?

例如,如果我有以下类:

public class Person { 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

我可以从我的控制器使用JsonResult所以我送样给我看的东西把它作为JSON:

{ 
    firstName : "Bob", 
    lastName : "Jones" 
}; 

现在,我如何使属性可观察,并使我的代码内的viewModel?

回答

8
$.ajax({ 
url: 'Home/GetUserData', 
type: 'post', 
success: function (data) { 
viewModel = ko.mapping.fromJS(data); 
viewModel.save = function() { sendToServer(); }; 
ko.applyBindings(viewModel); 
} 
}); 

您还需要使用映射插件。

http://knockoutjs.com/documentation/plugins-mapping.html

通知的ko.mapping.fromJS(数据);它正在从mvc端点获取模型并将其准备好以供观察。

+0

谢谢,你有没有在任何生产代码中使用过? – lancscoder 2011-04-21 10:27:35

+0

是的作品一种享受。 – RubbleFord 2011-04-21 12:35:35

1

我没有使用ko.mapping插件。我认为地图插件是双向的(这不是你的情况)。

我宣布一个HTML辅助>

public static string ToJson(this object obj) 
     { 
      var serializer = new JavaScriptSerializer(); 
      return serializer.Serialize(obj); 


     } 

其连载我的服务器端模块,客户端大小JSON,并在客户端声明它。

相关问题