【问题标题】:MVC Pass an array of a modal to a controller using Jquery ajaxMVC 使用 Jquery ajax 将模式数组传递给控制器
【发布时间】:2014-09-11 08:21:05
【问题描述】:

我有以下场景(这只是实际场景的一个示例,因为实际代码很多)。

::实体

public class stuff
{
    public int ID {get;set;}
    public string sometext {get;set;}
}

::模型

public class StuffModel
{
    public IEnumerable<entites.stuff> myStuff
}

::查看

<form class="frmItem"...>
    <input type="hidden" name="Item.ID" id="Item_ID" value="something" />
    <input type="text" name="Item.stuff" id="Item_stuff" value="some text" />
</form>
<form class="frmItem"...>
    <input type="hidden" name="Item.ID" id="Item_ID" value="something" />
    <input type="text" name="Item.stuff" id="Item_stuff" value="some text" />
</form>

::控制器

[HttpPost]
public ActionView ProcessStuff(StuffModel myModel)
{
    ...
}

我已尝试以下方法来执行此操作,但无法填充模型:

$('.btnRecalc').click(function () {
    var stuffItems = new Array();

    $('.sItem').each(function () {
        var flag = $(this).data('haschanged');
        if (flag != 0) {
            stuff[stuff.length] = $(this).find('.frmstuffItem').serialize();
        }
    });

    if (stuffItems[0] != null)
    {
        var response = $.ajax({
            url: '@Url.Action("dosomething")'
        , type: 'POST'
        , data: { myModel: JSON.stringify({ myStuff: stuffItems}) }
        });
    };
});

对于 ajax 调用的“数据”行,我尝试了以下所有方法:

, data: { JSON.stringify({ myStuff: stuffItems}) }

, data: { JSON.stringify({ myModel: stuffItems}) }

, data: { myModel: { myStuff: stuffItems} }

, data: { myStuff: stuffItems }

, data: { myModel: stuffItems }

我的问题是如何向控制器发布数据在表单中的模型数组?

【问题讨论】:

  • 一个好问题...我将编辑我的问题以包含该信息。
  • 你真的在任何地方写信给stuffItems吗? stuff 是什么?关于 javascript 代码的其他一些注释:要检查数组是否有任何内容,您可以执行 if (array.length)。要将项目添加到数组中,您可以执行 array.push(item)
  • 抱歉,是的,它说的是 stuff[stuff.length],它应该说的是 stuffItems[stuffItems.length]。并感谢 js 信息...我会做出这些改变。

标签: javascript jquery ajax asp.net-mvc-4 controller


【解决方案1】:

试试

data: JSON.stringify({ myModel: { myStuff: stuffItems } }),
contentType: 'application/json'

【讨论】:

  • 我注意到您没有设置发送到服务器的数据类型。答案已更新。现在它应该可以正常工作了。
  • 抱歉耽搁了...办公室代理非常严格,我无法从那里回复。我想出了一种不同的方式来做我需要的事情,但我仍然想弄清楚这一点。
猜你喜欢
  • 1970-01-01
  • 2016-01-06
  • 1970-01-01
  • 2016-03-01
  • 1970-01-01
  • 2011-12-16
  • 2021-07-01
  • 2016-10-28
  • 2016-07-18
相关资源
最近更新 更多