如何将模型传递给视图?

lan*_*der 4 asp.net-mvc asp.net-mvc-3 knockout.js

在观看MIX 11演讲之后我才开始关注knockoutjs,它看起来非常有前途.

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

例如,如果我有以下类:

public class Person {
    public string FirstName { get; set; }
    public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我可以使用JsonResult从我的控制器作为json传递它,所以我发送类似于我的视图:

{ 
    firstName : "Bob",
    lastName : "Jones"
};
Run Code Online (Sandbox Code Playgroud)

现在,如何使属性可观察并使其成为我的代码中的viewModel?

Rub*_*ord 8

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

您还需要使用映射插件.

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

注意ko.mapping.fromJS(数据); 这是从mvc端点获取模型并将其准备为可观察的.


Den*_*ika 5

这篇文章对我有所帮助:http://www.codeproject.com/Articles/332406/Client-side-Model-binding-with-ASP-NET-MVC-3-and-K

它显示了一种在没有ajax调用的情况下绑定viewmodel并且无需在控制器端执行其他转换的方法.