我正在使用jquery通过ajax发布数据,而在chrome工具中,它显示的数据是这样发送的:
PermssionArray[0][Permitted]:false
PermssionArray[0][Id]:2
PermssionArray[1][Permitted]:true
PermssionArray[1][Id]:3
PermssionArray[2][Permitted]:true
PermssionArray[2][Id]:4
我的控制器是这样的:
public ActionResult UpdatePermissions(PermSet[] PermssionArray)
我的PermSet类是这样的:
public class PermSet
{
public int Id { get; set; }
public bool Permitted { get; set; }
}
如果我在控制器中断点,PermssionArray数组中有3个项目,但值都是id = 0,allowed = false。
我需要更改以解决此问题?
答案 0 :(得分:5)
ASP.Net MVC中的列表非常奇怪,您可以选择将数据传输到服务器。
在ASP.NET MVC中使用默认模型绑定。这需要您更改模型以使用特定格式进行回发。查看Phil Haack的帖子。如果您有很多列表,这可能会变得多毛。 http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx
第二个选项是使用jQuery绕过你的帖子并将你的表单序列化为一个JSON文档,然后将其发送到服务器。选项2更容易,但要求您处理ajax请求而不是直接POST / Redirect操作。
我假设你知道如何使用jQuery和$ .ajax方法。
当页面的复杂性开始变大时,我开始更倾向于选项二。唯一的缺点是你需要一个非常好的客户故事。考虑使用knockout.js,因为它让你使用ko.toJSON将表单转换为JSON。
如果您希望我详细介绍任何内容,请与我们联系。