MVC控制器,将参数作为类

Kyl*_*yle 3 c# forms asp.net-mvc

我正在使用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
Run Code Online (Sandbox Code Playgroud)

我的控制器是这样的:

  public ActionResult UpdatePermissions(PermSet[] PermssionArray)
Run Code Online (Sandbox Code Playgroud)

而我的PermSet类是这样的:

  public class PermSet
        {
            public int Id { get; set; }
            public bool Permitted { get; set; }
        }
Run Code Online (Sandbox Code Playgroud)

如果我在控制器中断点,那么PermssionArray数组中有3个项,但值都是id = 0,allowed = false.

我需要更改什么来解决这个问题?

Kha*_*meh 5

ASP.Net MVC中的列表非常奇怪,您可以选择将数据传输到服务器.

  1. 在ASP.NET MVC中使用默认模型绑定.这需要您更改模型以使用特定格式进行回发.查看Phil Haack的帖子.如果您有很多列表,这可能会变得多毛. http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

  2. 第二个选项是使用jQuery绕过你的帖子并将你的表单序列化为一个JSON文档,然后将其POST到服务器.选项2更容易,但要求您处理ajax请求而不是直接POST/Redirect操作.

    • 使用JSON.stringify(模型)
    • 返回包含下一页重定向到成功的响应
    • 返回包含任何错误消息的响应

我假设您知道如何使用jQuery和$ .ajax方法.

当页面的复杂性开始变大时,我开始更倾向于选项二.唯一的缺点是你需要一个非常好的客户故事.考虑使用knockout.js,因为它让你使用ko.toJSON将表单转换为JSON.

如果您希望我详细介绍任何内容,请与我们联系.