Asp.net 使用jquery.load将对象数组传递给MVC 3
我在尝试将对象数组传递给MVC3控制器/操作时遇到问题。我在网上找到了一些讨论(包括这里的SO),但没有一个能解决我的问题。以下是我的工作内容:Asp.net 使用jquery.load将对象数组传递给MVC 3,asp.net,asp.net-mvc,asp.net-mvc-3,jquery,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Jquery,我在尝试将对象数组传递给MVC3控制器/操作时遇到问题。我在网上找到了一些讨论(包括这里的SO),但没有一个能解决我的问题。以下是我的工作内容: public class Person { public Guid TempId { get; set; } public bool ReadOnly { get; set; } [Required(ErrorMessage = "Required")] public string Name { get; set; } } 以
public class Person
{
public Guid TempId { get; set; }
public bool ReadOnly { get; set; }
[Required(ErrorMessage = "Required")]
public string Name { get; set; }
}
以下是我的控制器操作(目前,我已经尝试了许多变体)的样子:
[HttpGet]
public ActionResult AddPerson(List<Person> people)
{
if (null != people)
{
foreach (var person in people)
{
Debug.WriteLine(person );
}
}
return View();
}
people%5B1%5D.ReadOnly=false
是people[1]的编码版本。ReadOnly=false
我尝试过其他方法,例如:
var url = "AddPerson #peopleDiv";
var people = [];
people.push({'[0].TempId': '<valid guid>', '[0].ReadOnly': true, '[0].Name': 'Bob Jones' });
$("#peopleDiv").load(url, people, updatePeopleDiv); // nope
$("#peopleDiv").load(url, $.param(people, false), updatePeopleDiv); // nada
$("#peopleDiv").load(url, $.param(people, true), updatePeopleDiv); // nyet
var url=“AddPerson#peopleDiv”;
var people=[];
people.push({'[0].TempId':'',[0].ReadOnly:'true',[0].Name':'Bob Jones'});
$(“#peopleDiv”).load(url,people,updatePeopleDiv);//不
$(“#peopleDiv”).load(url,$.param(people,false),updatePeopleDiv);//娜达
$(“#peopleDiv”).load(url,$.param(people,true),updatePeopleDiv);//奈特
我还尝试修改上述内容,将people[]包装在一个对象中:var data={arr:people}
,然后尝试以各种方式发送该对象。所有的方法(除了我通过手动编码工作的方法)都会产生以下三种结果之一:
有什么建议吗?只需将contentType设置为
'application/json'
并使用json.stringify()
此外,添加/编辑/删除请求应通过POST完成
[HttpPost]
public ActionResult AddPerson(List<Person> people)
{
if (null != people)
{
foreach (var person in people)
{
Debug.WriteLine(person );
}
}
return PartialView("viewname");
}
[HttpPost]
公共行动结果AddPerson(列出人员)
{
如果(空!=人)
{
foreach(人与人之间的变量)
{
调试写线(人);
}
}
返回PartialView(“视图名称”);
}
只需将contentType设置为'application/json'
并使用json.stringify()
此外,添加/编辑/删除请求应通过POST完成
[HttpPost]
public ActionResult AddPerson(List<Person> people)
{
if (null != people)
{
foreach (var person in people)
{
Debug.WriteLine(person );
}
}
return PartialView("viewname");
}
[HttpPost]
公共行动结果AddPerson(列出人员)
{
如果(空!=人)
{
foreach(人与人之间的变量)
{
调试写线(人);
}
}
返回PartialView(“视图名称”);
}
您不希望通过查询字符串传递复杂对象。你想发布那些params.Dave-我同意,但正如我解释的(可能很糟糕),我无法让它工作,我不得不求助于通过查询字符串传递。你能给我看一个有效的例子吗?@DaveA所说的是正确的,试着在帖子中传递它。我的建议是创建一个JSON数组并将其作为字符串发布到控制器,然后在控制器中反序列化它。如果控制器动作没有被点击,那么你可能是在说它错了。例如,您的url包含一个#peopleDiv。这篇文章提供了一个很好的问题和解决方案示例…请密切注意示例中JSON.Stringify
的特殊用法,因为我相信您需要它来解决问题。您不希望通过查询字符串传递复杂对象。你想发布那些params.Dave-我同意,但正如我解释的(可能很糟糕),我无法让它工作,我不得不求助于通过查询字符串传递。你能给我看一个有效的例子吗?@DaveA所说的是正确的,试着在帖子中传递它。我的建议是创建一个JSON数组并将其作为字符串发布到控制器,然后在控制器中反序列化它。如果控制器动作没有被点击,那么你可能是在说它错了。例如,您的url包含一个#peopleDiv。这篇文章提供了一个很好的问题和解决方案示例……请密切注意示例中JSON.Stringify
的特殊用法,因为我相信您需要它来解决问题。
[HttpPost]
public ActionResult AddPerson(List<Person> people)
{
if (null != people)
{
foreach (var person in people)
{
Debug.WriteLine(person );
}
}
return PartialView("viewname");
}