我正在使用 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
我的 Controller 是这样的:
public ActionResult UpdatePermissions(PermSet[] PermssionArray)
我的 PermSet 类是这样的:
public class PermSet
{
public int Id { get; set; }
public bool Permitted { get; set; }
}
如果我在 Controller 中断点,PermssionArray 数组中有 3 个项目,但值都是 id = 0,permitted = false。
我需要更改什么才能解决此问题?
最佳答案
列表在 ASP.Net MVC 中非常奇怪,您可以选择将数据发送到服务器。
使用 ASP.NET MVC 中的默认模型绑定(bind)。这需要您更改模型以使用特定格式回发。查看 Phil Haack 关于此的帖子。这可行,但如果您有很多列表,可能会变得很麻烦。 http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx
第二种选择是使用 jQuery 绕过您的帖子并将您的表单序列化为 JSON 文档,然后将其 POST 到服务器。选项 2 更容易,但需要您处理 ajax 请求,而不是直接的 POST/Redirect 操作。
- 使用 JSON.stringify(模型)
- 返回包含成功重定向到的下一页的响应
- 返回包含任何错误消息的响应
我假设您知道如何使用 jQuery 和 $.ajax 方法。
当页面的复杂性开始变大时,我开始更倾向于选项二。唯一的缺点是你需要一个非常好的客户故事。考虑使用 knockout.js,因为它可以让您使用 ko.toJSON 将表单转换为 JSON。
如果您希望我详细介绍任何内容,请告诉我。
关于c# - MVC Controller ,将参数作为类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17783251/