2011-12-08 58 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