2013-07-19 31 views
0

模型綁定不按我認爲的方式工作。我以爲我可以製作一組對象,並將其傳遞給$ .post但不是,並不那麼容易。MVC3 + jquery post javascript數組對象

這就是我想要做的

var a=new Array(); 
a[0]={ 
    Name:"Eric", 
    Email:"[email protected]" 
} 

a[1]={ 
    Name:"Peter", 
    Email:"[email protected]" 
} 

$.post("/Home/SendPersons", a, function (data, status) { 
    $("#someid").html(data); 
}); 

,並在我的控制器:

public ActionResult SendPersons(IList<Person> persons) { 
    //Do stuff 
    return PartialView("Persons"); 
} 

但參數爲空。我如何正確地做到這一點?

+0

[通過JSON向ASP.Net MVC3發佈對象數組]可能的副本(http://stackoverflow.com/questions/4789481/post-an-array-of-objects-via-json-to-asp -net-MVC3) – Meryovi

回答

2

,你需要確保的有兩件事情:

每說Meryovi提供的鏈接,請確保您嘗試綁定字段都適當{ get; set; }字段作爲ModelBinder的,否則不會工作。 (如果您想讓某人看一下,您可以在您的問題中發佈您的人員模型。)

此外,請確保您發送的是真正的JSON請求。您可以通過編寫以下代碼來完成此操作:

$.ajax({ 
    url: '/Home/SendPersons', 
    type: 'POST', 
    dataType: 'json', 
    contentType: 'application/json', 
    data: JSON.stringify({ persons: a }), 
    success: function (data) { 
     $('#someid').html(data); 
    }, 
    error: function (jqXHR, textStatus, errorThrown) { 
     // TODO - Implement if an error occurs. 
    } 
}); 

現代瀏覽器將實施stringify方法。否則,使用Nuget引入JSON2,如果您需要支持舊版瀏覽器,將提供stringify方法。

此外,作爲第三個健全性檢查,看看你的數據。通常,JSON數據的結構和模型數據之間存在不匹配。