【问题标题】:Posting complex data to MVC controllers/actions将复杂数据发布到 MVC 控制器/动作
【发布时间】:2011-08-24 23:32:21
【问题描述】:

我已经研究过如何将数据发布到 MVC 控制器/动作,但遇到了一些麻烦。我希望以这种格式将数据(通过 javascript)发布到我的 MVC 控制器:

{
  someString: "thisString",
  myArray: ["string1", "string2"]
}

我的 MVC Action 具有以下签名:

[HttpPost]
public ActionResult someAction(FormCollection formValues);

如果我检查 formValues 的值,我会看到键/值对:

key: "someString"
value: "thisString"

key: "myArray[]"
value: [0]: "string1", [1]: "string2"

在我尝试之前一切看起来都不错:

TryUpdateModel(MyCustomModel);

key/value 对 someString/"thisString" 绑定完美,但数组 (myArray) 解析为 null。

我的模型如下所示:

public MyCustomModel 
{
    public string someString {get; set;}
    public string [] myArray {get; set;}
}

这是我的帖子的样子(jQuery):

$.post
(
    "Controller/someAction",
    {
        someString: "thisString",
        myArray: ["string1", "string2"],
    },
    function(data) { ...do something }
); 

我到底做错了什么?默认的 MVC ModelBinder 不支持绑定简单的字符串数组吗?

【问题讨论】:

  • 如果你在 MVC 3 上,你应该尝试从 JS 发布为 JSON(包括刺痛它)
  • lol 试过没有用,除非我做错了......但是谢谢
  • 没有问题,也许用你用来发布动作的 JS 更新你的帖子?所以我们可以看到流程的所有部分。
  • 我从未使用过@spencerooni 的解决方案。我用过$.postifyhere。不过,您必须使用 cmets 中的调整来避免在 null 元素上引发错误。

标签: asp.net asp.net-mvc


【解决方案1】:

发布到控制器操作时必须添加以下内容

traditional: true

我刚刚在我的机器上复制了这个问题并解决了它。我还发现 this 帖子似乎包含相同的解决方案

编辑

这里是another similar question...

【讨论】:

    猜你喜欢
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 2016-11-10
    • 2017-05-21
    • 2012-04-17
    • 2018-12-01
    相关资源
    最近更新 更多