客户端数据绑定与knockout js和MVC action方法

时间:2015-01-09 14:03:51

标签: jquery asp.net-mvc json knockout.js

我是mvc的新手。所以我不确定当第一次请求页面时,会调用一个动作方法。如果我们从该动作方法传递json,那么我们如何从客户端持有json并通过knockout和bind控件解析json。

我在asp.net mvc和knockout上发现了一些文章但是那些在第一次请求时都在服务器端绑定控件,并且从后续操作中他们通过jquery调用服务器端/操作方法函数以及操作方法返回的json是什么只需用那些json解析和填充淘汰赛。

因此可以在第一次请求页面时捕获json并填充knockout视图模型。 帮助示例代码对我非常有帮助。

我们是否需要使用任何其他knockoutjs来映射json和绑定数据?感谢

1 个答案:

答案 0 :(得分:1)

您的控制器将填充绑定到ASP.net视图的模型。然后在视图中,您将需要将c#模型序列化为json。我在这里使用json.net。然后你可以将它绑定到视图上的html。

所以如果您的C#模型是这样的:

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

然后你的控制器是这样的:

public class PersonController : Controller
{
    // GET: Person
    public ActionResult Edit(int personId)
    {
        //this is where you would load the person from your data source
        var person = _datasource.GetPerson(personId);

        return View(person);
    }
}

然后在您的视图中,您将在脚本标记中序列化为json:

$(function() {
    var personModel = '@JsonConvert.SerializeObject(Model)';
    ko.applyBindings(new PersonViewModel(personModel));
});

您可以将所有视图模型放在使用asp.net捆绑捆绑和缩小的javascript文件中。

这将是PersonViewModel.js

var PersonViewModel = function (model) {
    var self = this;

    self.firstName = ko.observable(model.FirstName);
    self.lastName = ko.observable(model.LastName);

    self.save = function () {
        ...
    }
};