2011-12-08 52 views
2

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

谢谢!

+1

分享一些你的代码 – rene

+0

我想通了。我没有正确映射我的路线:( –

回答

5

除了使用ko.mapping插件首先打开模型外,对于完成此任务的knockout没有什么特别之处。

在这段代码中,我将对象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模型必须具有相同的属性名称作为.NET对象你的MVC控制器动作需要,否则MVC模型绑定将不起作用。我喜欢的设计模式是将我的JS模型管理为.NET POCO对象,然后将它们的空默认版本序列化到客户端。这意味着我不必担心将JS文件和.NET CLR对象保持同步。

我还要提到的是,我使用MVC 3