2013-08-20 93 views
3

我有一個HTML表,並希望將表的內容傳遞給控制器​​方法。我使用JQuery創建一個數組,然後將它們變成一個JSON對象。如何將JSON對象傳遞給ASP.NET MVC中的控制器方法4

      var array_MACAddress = []; 
          var $MacAddress = $(".macaddress"); 

          for (var i = 0, len = $MacAddress.length; i < len; i++) { 
           var $MAC = $($MacAddress[i]); 
           console.log($MAC.text()); ////for testing only!!! 
           array_MACAddress.push({ 
            key: $MAC.data("key"), 
            value: $MAC.text() 
           }); 
          }; 

(它上面的代碼來創建一個名爲「MACAddress」列的陣列),那麼我使用下面的代碼把它們變成JSON對象

var json_MACAddress = json.stringify(array_MACAddress); 

如何通過JSON對象進入控制器方法?

public ActionResult ActivationManagement(String jsonData) 
+0

是否可以傳遞json對象作爲發佈請求的主體? –

+0

我不太確定 – user2701646

+0

您是否希望使用ajax將數據傳回控制器? –

回答

0

,所以你可以使用一個的WebAPI,或者如果我沒記錯的話,你可以到行添加[HttpPost]你上面的控制器方法:

[HttpPost] 
public ActionResult ActivationManagement(String jsonData) 

現在你的Ajax請求的主體將需要是一個字符串,並且您必須將字符串轉換爲您可以在服務器端操作的對象,因此如果您知道對JSON對象的期望,可以考慮定義您自己的自定義對象,然後讓MVC將身體解析爲您的自定義對象。

例如

public CustomObject() 
{ 
    public string id {get;set;} 
    public string address {get;set;} 
} 

... 

[HttpPost] 
public ActionResult ActivationManagement(CustomObject jsonData) 

對不起,我對MVC有些生疏,但我認爲這是一般的想法。

3

爲了使AJAX請求,你可以這樣做:

$("#someDomElement").click(function() { 
    $.ajax({ 
    url: "@Url.Content("~/YourController/ActivationManagement")", 
    data: array_MACAddress, 
    type: 'POST', 
    contentType: 'json' 
    }); 
}); 

你需要指定,將符合你的Ajax模型包含您的MAC地址的視圖模型:

public class MacAddress 
{ 
    public string Key { get; set; } 
    public string Value { get; set; } 
} 

既然你有效地有這些對象的列表您需要定義控制器的動作如下:

[HttpPost] 
public ActionResult ActivationManagement(List<MacAddress> macAddresses) 
{ 
    // Your logic here... 
} 

和MVC模型聯編程序會自動將它映射到您的模型,因爲您在contentType中AJAX調用您指定您要發送的數據是JSON類型。

我給你的建議是安裝Fiddler(http://fiddler2.com/),它可以幫助你分析每個請求,以便清楚地看到是否存在問題以及如何解決問題。

相關問題