2011-04-02 51 views
7

我試圖從jQuery函數傳遞數組到我的控制器。該數組包含內容和保存該內容的div的ID。從jQuery傳遞數組到MVC.NET控制器給控制器上的空結果,但值存在於jQuery功能

當我檢查通過Firebug中的AJAX帖子發送的對象時,正確的值在那裏,但是在我的控制器上放置一個斷點後,收到的值是一個空的列表或數組,或者我嘗試將其設置爲。我對使用JSON將數據傳遞給我的控制器相當陌生,所以在我出錯的地方會有一些幫助。

jQuery函數調用「submit」點擊。該數組在我的腳本中全局聲明,並在每次新區域填充內容時添加。

function postContent() { 
     $.ajax({ 
      type: "POST", 
      datatype: 'json', 
      url: "/Admin/getContentArray", 
      data: JSON.stringify(contentArray), 
      contentType: 'application/json; charset=utf-8', 
      success: function (result) { 
       alert(result.Result); 
      } 
     }); 
    } 

測試接收器

[HttpPost] 
    public JsonResult getContentArray(List<Content> myPassedArray) 
    { 
     var data = myPassedArray; 
     return this.Json(null); 
    } 

回答

1

你可以看看的following blog post。希望它能澄清事情。基本上有兩種情況:ASP.NET MVC 3,您可以將JSON請求發送到開箱即用的控制器操作,以及之前的ASP.NET MVC版本,您需要使用自定義的JsonValueProviderFactory

+0

那是奇怪,因爲我使用MVC 3,我應該設置什麼樣的數據類型來接受我的控制器上的這些數據?如上所述,將其設置爲「Content」類型的列表將返回具有正確數量的條目但僅沒有數據的列表。 – 2011-04-02 18:53:07

+0

你讓我走在正確的軌道上。我將我的內容模型設置爲精確地鏡像在JSON對象中發送的鍵,並且您擁有它,結果!!!謝謝Darin – 2011-04-02 19:04:08

5

我得到這個工作通過設置傳統屬性爲true之前進行調用。即:

jQuery.ajaxSettings.traditional = true 

$.get('/controller/MyAction', { vals: arrayOfValues }, function (data) {... 

我發現這裏的解決方案:Pass array to mvc Action via AJAX

相關問題