从Knockout发布到ASP.NET MVC控制器

时间:2011-12-08 20:44:13

标签: javascript knockout.js

我想了解knockout.js。目前,我正在尝试对我的JSON对象到达控制器的MVC控制器进行POST。有人知道在线可下载的代码示例吗?我似乎无法找到任何证明这一点的代码。我在这里显示的视频中看到了它:http://channel9.msdn.com/Events/MIX/MIX11/FRM08。但是,我的方法目前给我一个404.我怀疑它与我如何序列化的东西有关。因此,我正在寻找一个例子。

谢谢!

1 个答案:

答案 0 :(得分:5)

除了使用ko.mapping插件首先打开你的模型之外,执行此任务的敲除确实没什么特别之处。

在这个片段中,我将对象searchParams发布到Search / ExecuteSearch。这使用jQuery,

    var jsonString = ko.mapping.toJSON(this.searchParams);
    $.ajax({
        url: "/Search/ExecuteSearch",
        data: jsonString,
        type: 'POST',
        contentType: 'application/json',
        dataType: 'json',
        success: this.setSearchResults.bind(this)
    });

这是控制器动作:

    /// <summary>
    /// Execute a search
    /// </summary>
    /// <param name="search"></param>
    /// <returns></returns>
    [HttpPost]
    public JsonResult ExecuteSearch(AdvertisementSearch search)
    {
        var searchExecutor = new SearchExecutor();
        return Json(searchExecutor.ExecuteSearch(search, CustomerData));
    }

重要的是,您的JS模型必须具有与MVC控制器操作所期望的.NET对象相同的属性名称,否则MVC模型绑定将不起作用。我喜欢的设计模式是将我的JS模型作为.NET POCO对象进行管理,然后将它们的空的默认版本序列化到客户端。这意味着我不必担心保持JS文件和我的.NET CLR对象同步。

我还应该提到我正在使用MVC 3。