c# - MVC Controller ,将参数作为类

标签 c# asp.net-mvc forms

我正在使用 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 中非常奇怪,您可以选择将数据发送到服务器。

  1. 使用 ASP.NET MVC 中的默认模型绑定(bind)。这需要您更改模型以使用特定格式回发。查看 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。

如果您希望我详细介绍任何内容,请告诉我。

关于c# - MVC Controller ,将参数作为类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17783251/

相关文章:

c# - 什么时候可以使用 ClearAllPools 方法?

c# - double.MaxValue 和 double.MinValue 在以下上下文中意味着什么?

c# - 将字符串数据库值与两个以上的词进行比较

c# - 使用 MStest 和最小起订量测试 TryUpdateModel()

asp.net-mvc - 在 MVC 中处理重复表单的最佳方法是什么?

Javascript:访问多维对象属性

c# - Controller - ASP.NET MVC - 每个应用程序域是否创建了多个 Controller 实例?如果是,在什么条件下?

c# - 自定义错误页面中的 AspxErrorPath

javascript - Jquery - 动态添加的输入字段不会发送值以发布

jQuery:如何在不关闭 jQuery 对话框的情况下提交表单