【发布时间】:2022-08-16 11:26:45
【问题描述】:
如何使用 Json Stringify 传递多个对象? string[] 活动已填充,如果我暂时删除它,则 playerLevels 将被填充。
我对 javascript 还是很陌生,所以不太确定要尝试什么
下面是我的代码
let collection = document.getElementsByClassName(\"skill-icon-selected\");
const skillsChosen = new Array;
for (var i = 0; i < collection.length; i++)
{
var split = collection[i].id.split(\"-\");
skillsChosen.push(split[0]);
}
let levelCollection = document.getElementsByClassName(\"skill-input\");
const playerLevels = new Array;
for (var i = 0; i < levelCollection.length; i++)
{
playerLevels.push(levelCollection[i].value);
}
$.ajax({
url: \"/index?handler=GetActivity\",
type: \"POST\",
contentType: \'application/json\',
dataType: \"json\",
data: JSON.stringify(skillsChosen, playerLevels),
headers: {
RequestVerificationToken:
$(\'input:hidden[name=\"__RequestVerificationToken\"]\').val()
},
success: function(result)
{
console.log(result);
},
error: function(e)
{
console.log(e);
},
contentType: \"application/json\"
});
cshtml.cs
public IActionResult OnPostGetActivity([FromBody] string[] activities, [FromBody] int[] playerLevels)
{
allActivities = _context.Activities.ToList();
if (activities.Length > 0)
{
System.Diagnostics.Debug.WriteLine(\"testing \" + activities[0]);
}
foreach (Activity activity in allActivities)
{
if (activities.Contains(activity.Skill.ToLower()))
{
//if user skill is between min and max
System.Diagnostics.Debug.Write(activity.ActivityName);
}
}
return new JsonResult(\"testing\");
}
-
我认为您的数据对象应该是
{ activities: skillsChosen, playerLevels },也不确定为什么需要对其进行字符串化 -
嗨@Pete我试了一下(有和没有stringify)并且活动在调试时在cshtml.cs中显示为null
-
您是否尝试过删除
[FromBody] -
@Pete string[] 活动然后变为空(不为空),不确定这是否有帮助
标签: javascript c# jquery asp.net-core razor