使用ajax将字符串数组传递给mvc控制器
Passing a string array to mvc controllers using ajax
我需要将多选中的字符串列表传递给控制器。虽然这个要求在我看来很简单,但在过去的一个小时里,我一直在为此伤透脑筋。我对此做了相当的研究,但未能成功。
下面是我的Javascript代码。请忽略评论。我成功地获取了多选中的项目列表。当我进行ajax调用时,我得到错误"Object reference not set a instance of a Object
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
}
有人能指引我到底哪里出了问题吗?有人能告诉我怎么了吗?
编辑:根据Rory先生的建议,我对java脚本进行了更改。现在Java脚本部分工作得非常好。但是在发出ajax请求时,控制器不会被调用。如果打给管制员的电话出了问题,有人能帮我吗?
您尝试过使用string[]
而不是List<String>
吗?
AssignTasks
操作所需的参数称为selectedTasks
,而不是values
:
var postData = { selectedTasks: selected };
还要注意,在JS中调试任何东西时,您应该始终使用console.log()
而不是alert()
,因为后者将所有类型强制为字符串,这意味着您看不到实际值的真实表示。
相关文章:
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- Flash Uploadify在调用我的MVC控制器时没有保留会话/授权
- 将不在模型中的数据返回到mvc控制器
- 使用查询将对象数组发布到asp.net-mvc控制器操作的正确方法是什么
- 从 javascript 获取 MVC 控制器中的操作参数时出错
- 使用 $.getJson 方法从 jquery 调用 C# MVC 控制器方法
- 将数据从MVC控制器传递到Angular视图,而不在最终的html中显示数据值
- 有可能将东西存储在MVC控制器中吗
- 如何使用json对发送到MVC控制器的数据进行编码
- POST KnockoutJS数据到mvc控制器没有绑定
- 在Javascript函数中获取MVC控制器名称
- ASP.NET MVC:2d数组在从javascript传递到MVC控制器操作后为null
- 如何将JavaScript文件路径映射到ASP.Net MVC控制器操作
- AJAX只将数组的最后一个元素传递给MVC 5控制器
- 无法使用.ajax调用显示MVC控制器返回的属性值
- 使用ajax将字符串数组传递给mvc控制器
- 数据从Javascript传递到MVC控制器
- 通过url将jsonArray传递给mvc控制器,无法获取对象
- 使用MVC控制器与websockets连接到windowsazure
- AngularJS vs MVC控制器选择什么