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