gpt4 book ai didi

javascript - 从 ajax 获取数据到 mvc 操作

转载 作者:搜寻专家 更新时间:2023-11-01 05:20:12 26 4
gpt4 key购买 nike

我想将对象数组从 ajax 调用发送到 Controller 操作。

在后端我有

容器类:

public class MyContainer
{
public string Id { get; set; }
public Filter[] Filters { get; set; }
}

public class Filter
{
public string Name { get; set; }
public string[] Values { get; set; }
}

和 Action :

public ActionResult MyAction(MyContainer container)
{
var id = container.Id;
foreach(Filter filter in container.Filters)
{
//Do something
}
}

在前端我有

$(document).on('click', 'mySelector', function (event) {

//Create first object
var firstIds = {};
firstIds.Name = "Custom Name 1";
firstIds.Values = GetIds('param1'); //this return an array of strings

//Create second object
var secondIds = {};
secondIds.Name = "Custome Name 2";
secondIds.Values = GetIds('param2'); //another array

var Id = $(this).attr('id'); //id of element

//Add objects to array
var filters = [];
filters.push(firstIds);
filters.push(secondIds);

$.ajax({
method: "GET",
url: baseUrl+"/MyAction",
//traditional: true, //I tried with and without that parameter
data:
{
Id: Id,
Filters: filters
},
contentType: 'application/json',
success: function (res) {
alert('success')
}
});
});

因此,如果我像上面的示例那样使用它,操作中的容器对象具有 Id 值并在过滤器中具有 2 个元素的数组,但是它们的名称和值都为 null。

将传统设置为 True,我设置了 container.Id,但 container.Filters = null。

有什么建议吗?谢谢。

最佳答案

POST 请求与 JSON.stringify() 方法结合使用。

C#

[HttpPost]
public ActionResult MyAction(MyContainer container)
{
var id = container.Id;
foreach(Filter filter in container.Filters)
{
//Do something
}
}

JQUERY

$.ajax({
method: "POST",
url: baseUrl+"/MyAction",
data:JSON.stringify(
{
Id: Id,
Filters: filters
}),
contentType: 'application/json',
success: function (res) {
alert('success')
}
});

为什么需要 JSON.stringify() 方法?

contentType 是你发送的数据类型,所以 application/json; 默认是 application/x-www-form-urlencoded; charset=UTF-8.

如果你使用application/json,你必须使用JSON.stringify()来发送JSON对象。

JSON.stringify() 将 javascript 对象 转换为 json 文本并将其存储在 string 中。

关于javascript - 从 ajax 获取数据到 mvc 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46724005/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com