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

Mon*_*per 2 javascript knockout.js

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

谢谢!

jma*_*nes 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)
    });
Run Code Online (Sandbox Code Playgroud)

这是控制器动作:

    /// <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));
    }
Run Code Online (Sandbox Code Playgroud)

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

我还要提一下,我正在使用MVC 3.