2013-08-21 33 views
2

我有多個數組,我想從視圖傳遞到控制器方法。爲此,我將這些數組轉換爲JSON對象。然後,創建AJAX調用,但是如何一次發送這些JSON對象?如何傳遞多個數組在一個Ajax調用控制器方法ASP.net MVC 4

var json_InstallationControl = JSON.stringify(array_installationControl); 
var json_HardwareGUID = JSON.stringify(array_HardwareGUID); 
var json_InstallAppID = JSON.stringify(array_InstallAppID); 
var json_MACAddress = json.stringify(array_MACAddress); 

$.ajax({ 
url: "@Url.Content("~/Home/ActivationManagement")", 
type: "POST", 
contentType: "application/json", 
data: { jsonData: json_InstallationControl }, 
success: function(){ 
console.log('success!!'); 
} 
}) 

[HttpPost] 
public ActionResult ActivationManagement(String jsonData) 
+0

如何使用jsonify? – user2701646

回答

9

像往常一樣通過編寫將掌握的信息視圖模型開始:

public class MyViewModel 
{ 
    public string[] InstallationControls { get; set; } 
    public string[] HardwareGUIDs { get; set; } 
    public string[] InstallAppIDs { get; set; } 
    public string[] MACAddresses { get; set; } 
} 

您的控制器的行動將採取:

[HttpPost] 
public ActionResult ActivationManagement(MyViewModel model) 
{ 
    ... 
} 

現在所有剩下的就是送相應的JSON對象:

var data = JSON.stringify({ 
    installationControls: array_installationControl, 
    hardwareGUIDs: array_HardwareGUID, 
    installAppIDs: array_InstallAppID, 
    macAddresses: array_MACAddress 
}); 

$.ajax({ 
    url: "@Url.Content("~/Home/ActivationManagement")", 
    type: "POST", 
    contentType: "application/json", 
    data: { data: data }, 
    success: function() { 
     console.log('success!!'); 
    } 
}); 

在這個例子中,我使用了字符串數組作爲視圖模型的屬性,但是您當然可以根據您要發送的數據使用任意複雜的對象。

+0

也打我吧;複製貼! –

+0

我只是想知道,如果我在控制器方法中有多個參數,這個工作嗎?或者它只能在方法中只有一個參數?謝謝 – user2701646

+1

但是,爲什麼你會有一個控制器方法中的多個參數?我的答案的重點是,你應該寫一個包含所有必要信息的視圖模型。所以如果你需要別的東西,只需將它們作爲屬性添加到視圖模型。這樣,您永遠不需要向控制器操作添加多個參數。 –

0

像這樣:

$.ajax({ 
url: "@Url.Content("~/Home/ActivationManagement")", 
type: "POST", 
contentType: "application/json", 
data: { 
json_InstallationControl: json_InstallationControl, 
json_HardwareGUID :json_HardwareGUID, 
json_InstallAppID :json_InstallAppID, 
json_MACAddress :json_MACAddress 
}, 
success: function(){ 
console.log('success!!'); 
} 
}) 

和服務器

public ActionResult ActivationManagement(String json_InstallationControl,String json_HardwareGUID ,String json_InstallAppID,String json_MACAddress) 

或者,如果你希望在單個對象發送到服務器,與所有4個陣列的特性創建新的對象,然後字符串化和發送那個對象。

+1

但是這意味着你需要JSON反序列化你的控制器動作中的數據,這是一個不必要的管道代碼,應該留給框架,而不是用它來污染你的控制器代碼。 –

+0

Spring中有@RequestBody註解,它反序列化JSON並創建一個java對象,但不確定它在asp.net中如何完成,因此沒有包含它。 – Farhan

+1

但是這個問題是關於ASP.NET MVC 4的,而不是Spring框架。 –

相關問題