Javascript 使用ajax将字符串数组传递给mvc控制器
我需要将字符串列表从multiple select传递给控制器。虽然这个要求在我看来很简单,但在过去的一个小时里,我在这件事上还是伤了脑筋。我对此做了公平的研究,但未能成功 下面是我的Javascript代码。请忽略这些评论。我成功地获取了多重选择中的项目列表。在执行ajax调用时,出现错误“Object reference未设置对象实例”Javascript 使用ajax将字符串数组传递给mvc控制器,javascript,c#,jquery,ajax,asp.net-mvc-4,Javascript,C#,Jquery,Ajax,Asp.net Mvc 4,我需要将字符串列表从multiple select传递给控制器。虽然这个要求在我看来很简单,但在过去的一个小时里,我在这件事上还是伤了脑筋。我对此做了公平的研究,但未能成功 下面是我的Javascript代码。请忽略这些评论。我成功地获取了多重选择中的项目列表。在执行ajax调用时,出现错误“Object reference未设置对象实例” function submitForm() { var selected = $('#selectedTasks option').map(func
function submitForm() {
var selected = $('#selectedTasks option').map(function(){
return this.value
}).get()
var postData = { selectedTasks : selected } //corrected as suggested
//selectedTasks = JSON.stringify({ 'selectedTasks': selected });
alert(postData);
$.ajax({
type: "POST",
//contentType: 'application/json; charset=utf-8',
url: '@Url.Action("AssignTasks", "MonthEndApp")',
dataType: 'json',
data: postData,
traditional: true,
success: function (data) {
alert("Success");
},
error: function (xhr) {
alert(xhr.responseText);
}
});
}
MonthEndAppController.cs
[HttpPost]
public void AssignTasks(List<String> selectedTasks)
{
//do something
}
[HttpPost]
公共任务(列出选定任务)
{
//做点什么
}
有人能告诉我哪里出了问题吗?有人能告诉我哪里出了问题吗
编辑:根据Rory先生的建议,我已经对java脚本进行了更改。现在java脚本部分工作得非常好。但是当发出ajax请求时,控制器没有被调用。如果对控制器的调用出现错误,有人能帮我解决吗?调用了
AssignTasks
操作所期望的参数所选任务
,而非值
:
var postData = { selectedTasks: selected };
还请注意,在调试JS中的任何内容时,您应该始终使用
console.log()
而不是alert()
,因为后者将所有类型强制为字符串,这意味着您没有看到实际值的真实表示。您尝试过string[]
而不是列表
?谢谢你的建议。这完全是我的错误。谢谢你指出。它确实有效(javascript部分)。但是控件在调试时没有移动到控制器。它只是显示一个警报“成功”“,但不知道为什么控件没有移动过来。您认为控制器有问题吗?@user3173346而不是[httppost]尝试[webmethod]?