![](/img/trans.png)
[英]AJAX POST Data to MVC Controller in ASP.NET Core Always Null When Passing An Object Array Over a Certain Length
[英]Sending Array Object Data in Javascript to ASP.NET Core Controller using AJAX ()
我已經嘗試了與該問題有關的所有其他解決方案,但仍然找不到我的代碼缺少的內容。 這是我的 AJAX() 代碼。
var group = JSON.stringify({ 'listofusers': listofusers });
console.log("listofusers : " + JSON.stringify({ 'listofusers': group }));
(Assuming I have my listofusers object ready, and yes i've checked the console and it has data inside.)
$.ajax({
contentType: 'application/json; charset=utf-8',
dataType: 'json',
type: "POST",
url: url,
data: group,
success: function (data) {
console.log("output : " + JSON.stringify(data));
//doSend(JSON.stringify(data));
//writeToScreen(JSON.stringify(data));
},
error: function (data) {
console.log("error : " + JSON.stringify(data));
},
});
這是我的服務器端控制器。
[HttpPost]
public IActionResult GetMesssage(List<UserModel> listofusers)
{
var g = listofusers;
}
只是從控制器中進行簡單的獲取,因此我可以驗證來自客戶端的數據是否確實已發送。
我已經嘗試了 [FromBody] 屬性,但仍然沒有從服務器端獲取數據的運氣。
這是一個如下所示的工作演示:
1.型號:
public class UserModel
{
public int Id { get; set; }
public string Name { get; set; }
}
2.查看(刪除Content-type
):
<script>
var listofusers = [
{ id: 1, name: 'aaa' },
{ id: 2, name: 'bbb' },
{ id: 3, name: 'ccc' }
];
var group = { 'listofusers': listofusers };
console.log(group);
$.ajax({
dataType: 'json',
type: "POST",
url: "/home/GetMesssage",
data: group,
success: function (data) {
console.log("output : " + JSON.stringify(data));
},
error: function (data) {
console.log("error : " + JSON.stringify(data));
},
});
</script>
3. Console.log(group)
:
更新:
使用 json 的另一種方法:
1.View(將組從JSON.stringify({ 'listofusers': listofusers });
更改為JSON.stringify(listofusers);
):
<script>
var listofusers = [
{ id: 1, name: 'aaa' },
{ id: 2, name: 'bbb' },
{ id: 3, name: 'ccc' }
];
var group = JSON.stringify(listofusers);
console.log(group);
$.ajax({
contentType:"application/json",
dataType: 'json',
type: "POST",
url: "/home/GetMesssage",
data: group,
success: function (data) {
console.log("output : " + JSON.stringify(data));
},
error: function (data) {
console.log("error : " + JSON.stringify(data));
},
});
</script>
FromBody
(添加FromBody
):
[HttpPost]
public IActionResult GetMesssage([FromBody]List<UserModel> listofusers)
{
//...
}
你可以試試這個。
首先將要傳遞的參數字符串化:
$.ajax({
url: url,
type: "POST",
data: {
listofusers: JSON.stringify(listofusers),
},
success: function (data) {
},
error: function (error) {
}
});
然后在您的控制器中:
[HttpPost]
public IActionResult GetMesssage(string listofusers)
{
var jsonModel = new JavaScriptSerializer().Deserialize<object>(listofusers); //replace this with your deserialization code
}
我們在這里做的是將您的對象作為字符串傳遞,然后在控制器端接收后反序列化它。
希望這可以幫助。
我找到了解決問題的方法,但我只想澄清一下,也許有解決方法或其他解決方案。
我研究了“JSON.stringify();”傳遞的數據來自 AJAX() 並且有點像這樣。
"[[{\\"ID\\":0,\\"UserID\\":1014,\\"Level\\":\\"support\\",\\"Department\\":\\"\\",\\"Facility\\":\\"Talisay District Hospital\\",\\"Firstname\\":\\"Joseph\\",\\"Middlename\\":\\"John\\",\\"Lastname\\":\\"Jude\\",\\"LoginStatus\\":false,\\"IPAddress\\":\\"192.168.110.47:12347\\"},{\\"ID\\":0,\\"UserID\\":1014,\\"Level\\":\\"support\\",\\"Department\\":\\"\\",\\"Facility\\":\\"Talisay District Hospital\\",\\"Firstname\\":\\"Joseph\\",\\"Middlename\\":\\"John\\",\\"Lastname\\":\\"Jude\\",\\"LoginStatus\\":false,\\"IPAddress\\":\\"192.168.110.47:15870\\"}]]"
我想知道 JSON 格式是否是從控制器端解析數據的一個因素。 (這當然是愚蠢的,因為只有一種 JSON 格式。(或者也許還有另一種,如果有的話,請您發布一些來源以供參考。))
所以我嘗試在我的模型中使用“JsonConvert.Serialize()”方法序列化一個虛擬數據,輸出的 JSON 數據是這樣的。
[{"ID":0,"UserID":1014,"Level":"support","Department":"","Facility":"Talisay District Hospital","Firstname":"Joseph","Middlename":"John","Lastname":"Jude","LoginStatus":false,"IPAddress":"192.168.110.47:12347"},{"ID":0,"UserID":1014,"Level":"support","Department":"","Facility":"Talisay District Hospital","Firstname":"Joseph","Middlename":"John","Lastname":"Jude","LoginStatus":false,"IPAddress":"192.168.110.47:16709"}]
我嘗試通過 AJAX() 將來自 JsonConvert.Serialize() 方法的輸出 JSON 數據發送到控制器,並且成功了! 我現在感到很欣慰,因為這個問題已經很令人沮喪了。
如果我發現的內容有問題,請回復可能是錯誤或正確的內容。 謝謝!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.