我尝试使用以下代码,但在控制器端显示为null ..
查看:
<script>
function getme(){
debugger;
var emp = [
{ empid: 1, name: 'sasi' },
{ empid: 2, name: 'sathish'}
];
emp = JSON.stringify({ 'emp': emp });
$.ajax({
contentType: 'application/json; charset=utf-8',
dataType: 'json',
type: 'POST',
url: '/Home/getemplist',
data: JSON.stringify(emp)
});
}
</script>
<input type="button" onclick="getme();" value="Click me" />
控制器:
public void getemplist(List<Emp> emp)
{ }
Emp.cs:
public class Emp
{
public int empid { get; set; }
public string name{get;set;}
}
答案 0 :(得分:5)
在google中进行了大量搜索之后..我找到了将对象列表发布到控制器的方法..我在代码中修改了一点......这里是!!
脚本:
var emp = [{ 'empid': 1, 'name': 'sasi' },{ 'empid': 2, 'name': 'sathish'}];
emp = JSON.stringify(emp)
$.post("/Home/getemplist/", { 'emp': emp })
控制器:
这里我只是将参数更改为字符串类型。使用JavaScriptSerializer,您可以将此字符串数据转换为类列表对象..如果您在下面看到我的代码,您可以更好地理解它:
public void getemplist(string emp)
{
List<Emp> personData;
JavaScriptSerializer jss = new JavaScriptSerializer();
personData = jss.Deserialize<List<Emp>>(emp);
// DO YOUR OPERATION ON LIST OBJECT
}
在控制器中包含此(System.Web.Script.Serialization)命名空间,以便使用JavaScriptSerializer类。
希望这有帮助!!快乐的编码:)
答案 1 :(得分:1)
您要发送到服务器的数据存在问题。你不需要JSON.stringify 2次。
function getme() {
debugger;
var emp = [
{ empid: 1, name: 'sasi' },
{ empid: 2, name: 'sathish' }
];
emp = JSON.stringify({ emp: emp });//make json string once
$.ajax({
contentType: 'application/json; charset=utf-8',
dataType: 'json',
type: 'POST',
url: '/Home/getemplist',
data: emp //send it to server
});
}