2017-04-19 75 views
0

我有一個自定義對象數組以及一些不相關的字符串,我想發佈到MVC控制器,但是我似乎無法在控制器。使用Ajax發佈自定義對象到MVC控制器

這裏是我的Ajax請求:

var objects = new Array(); 

objects.push({ 
item1: "1", 
item2: "2", 
item3: "3" 
}); 

$.ajax({ 
    url: '/Account/Post', 
    data: { 
     objects: JSON.stringify({objects: objects}), 
     username: $("#username").val() 
    }, 
    type: 'POST', 
    success: function() { 
    }, 
    error: function() { 
    } 
}); 

,這裏是我的控制器:

[HttpPost] 
    public ActionResult Post(Objects[] objects, string username) 
    { 
     return null; 
    } 

這裏是我的對象類:

public class Objects 
{ 
    public string Item1 { get; set; } 

    public string Item2 { get; set; } 

    public string Item3 { get; set; } 

    public string Item4 { get; set; } 
} 

什麼我錯在這裏做什麼?

+0

您有錯誤?控制器是否被調用?您是否通過任何JavaScript調試器查看HTTP請求? – Steve

+0

控制器被調用,但對象數組爲null – Jannik

+0

Objects類是什麼樣的? – Steve

回答

0

刪除JSON.stringify修復了我的問題,原因不明。

+0

我一開始並沒有注意到,但在你的ajax調用「對象:JSON.stringify({objects:objects})」的行實際上應該是:「objects:JSON.stringify(objects)」 – Steve

+1

原因是因爲服務器想要一個實際的對象,而不是一個字符串。 $ .ajax會將其串行化以進行傳輸。如果你傳遞一個字符串(通過stringify),它會被串行化爲一個單一的字符串變量。如果你傳遞一個對象,它會正確地將它連續化。在瀏覽器的開發工具的網絡選項卡中查看請求變量,你會發現請求體中包含的內容有所不同。 – ADyson

相關問題