提问人:BrianLegg 提问时间:10/22/2023 更新时间:10/23/2023 访问量:39
将查询字符串参数 + ID 列表作为 POST 传递给 MVC 控制器
Pass querystring parameter + list of ids as POST to MVC Controller
问:
我正在尝试将 id(长)加上 id(数组)列表传递给控制器操作。我最好的运气是让 id 通过,但我从未让数组发布过。
我今天至少浏览了 10 篇堆栈溢出文章,试图让它发挥作用。我确定我错过了一些小东西,但我不确定是什么。
Javascript 和 AJAX:
HandleCardReordering: function () {
var ids = new Array();
for (var i = 0; i < $(".CourseSectionId").length; i++) {
ids[i] = $(".CourseSectionId:eq(" + i + ")").val();
}
var courseId = $("#CourseId").val();
$.ajax({
url: "/Content/CourseContent/ReorderCourseSections?courseId=" + courseId + "§ionIds=" + JSON.stringify(ids),
cache: false,
type: "POST",
dataType: 'json',
contentType: "application/json",
traditional: true,
success: function (result) {
//
}
});
},
ids 集合和 courseId 是有效的,我用 console.log 检查了它们,它们看起来不错。
我的控制器方法:
[HttpPost]
public async Task<JsonResult> ReorderCourseSections(long courseId, [FromQuery]long[] sectionIds, CancellationToken cancellationToken)
{
return Json(new { success = "true" });
}
我可以通过查询字符串参数获取要填充的 courseId,但 sectionIds 始终是一个长度为 0 的数组。我尝试添加 traditional: true,尝试字符串化我的 ids 集合,我将 [FromQuery] 添加到我的 sectionIds 参数中。没有一个奏效。感谢您的观看。
答:
0赞
Negi Rox
10/23/2023
#1
可能的解决方案:
1. 第一种方法:
1- 将参数类型从 long[] 更改为 string。 2- 你现在会得到一个字符串,解析它并在控制器中将其转换为 long[]。
public ActionResult Multiple(string sectionIds){
long[] idsArray = sectionIds.Split(',').Select(long.Parse).ToArray();
}
第二种方法:
1- 更改您的 queryparamter,如下例所示
?sectionIds=24041§ionIds=24117
无需更改控制器。在。Netcore它会起作用。
http://localhost:5434/MukeshNProject/MultipleIds?ids=24041&ids=24117
public ActionResult MultipleIds([FromQuery] int[] ids)
{
}
评论
sectionIds