2015-12-07 68 views
1

我有一個JavaScript對象像傳遞數組:在JavaScript對象MVC控制器

var data={ 
Manager:name, 
ID:id, 
EmployeeNames:arrayEmployees 
}; 

正如你可以看到,名稱和ID是簡單的字符串,但EmployeeNames的是一個數組對象。我有AJAX調用這樣的:

$.ajax({ 
     type: "POST", 
     url: "GetManagerEmployees", 
     content: "application/json;", 
     dataType: "json", 
     data: data, 
     success: 
     error: 
}); 

在控制器我有一個方法GetManagerEmployees(數據的數據)與類型數據的參數,它包含了所有的屬性:

public class Data 
{ 
    public string Manager { get; set; } 
    public int id { get; set; } 
    public List<string> EmployeeNames { get; set; } 

我收到數據.EmployeeNames在我的控制器中爲空,我在這裏做錯了什麼?你能幫我解決這個問題嗎?

+0

顯示你是什麼'arrayEmployees'變量 – suvroc

+1

檢查http://stackoverflow.com/a/5489518/4772988也 – suvroc

+0

顯示你的控制器 – Imad

回答

0

剛剛創建這種結構的項目,它的工作:

需要注意的是傳統:jQuery開發AJAX調用正確的:

在jQuery 1.4中,$ .PARAM()方法序列化深對象遞歸地適應現代腳本語言和框架,例如PHP和Ruby on Rails。您可以通過設置jQuery.ajaxSettings.traditional = true;來全局禁用此功能。

來源:jQuery.param() Docs

而且,你不需要爲一個列表。只需在模型中使用簡單的字符串數組。

的Javascript

$("#myBtn").click(function() { 

       var arrayEmployees = new Array(); 

       arrayEmployees.push("Name1"); 

       var data = { 
        "Manager": 'John', 
        "id": 1, 
        "EmployeeNames": arrayEmployees 
       }; 

       $.ajax({ 
        type: "POST", 
        traditional:true, 
        url: "PostManager", 
        content: "application/json;", 
        dataType: "json", 
        data: data, 
        success: function() { 
        } 
       }); 
      }); 

控制器/型號

[HttpPost] 
public void PostManager(Data data) 
{ 

} 

public class Data 
{ 
    public string Manager { get; set; } 
    public int id { get; set; } 
    public string[] EmployeeNames { get; set; } 
} 
+0

如果我添加傳統:true,那麼它不會調用控制器,即時通訊使用jquery-1.8版本,我是否需要添加任何其他版本的jquery腳本? – user3202524

+0

$ .param(arrayEmployees)正在返回數組中的未定義元素 – user3202524

+0

剛剛創建了一個新的MVC項目,使用jquery-1.10.2。你看到控制檯中有任何錯誤嗎?確保你的網址正確。 – jpgrassi