ASP.net MVC4:使用AJAX将数据添加到从数据库请求获取的集合中,并将它们发送到控制器

时间:2016-04-13 08:14:06

标签: c# jquery asp.net ajax asp.net-mvc-4

我正在尝试根据AJAX请求中的数据创建表单。用户应该能够通过选择元素来添加元素,并将这些元素添加到可以提交的表单中。这些元素应该添加到名为Employees的集合中。

通过数据库中的AJAX请求元素,并拥有实体的主键。当我查看框架帮助程序生成的HTML时,对于带有ID的隐藏字段,它看起来有点像这样:

<input id="Employees_0__EmployeeId" name="Employees[0].EmployeeId" value="1" type="hidden">

就像我看到0是collection-element的索引。如何管理它以使用框架以正确的方式动态添加和删除元素?是否有一些助手可以支持我这样做?

如果可能,我不想编写管理已使用的indizes的变通方法,以防止覆盖该集合的项目。

更新:

我尝试了建议的解决方案,但它失败了,因为看起来索引必须是增量的,从0开始:

            var dummyindex = (new Date()).getTime();

        var inputelement = $('<input data-val="true" id="Employees_'
            + dummyindex
            + '_EmployeeId" name="Employees['
            + dummyindex
            + '].EmployeeId" value="'
            + $(this).parent().attr('id') // this is the parent key
            + '" type="hidden">');

1 个答案:

答案 0 :(得分:0)

要实现此目的,您必须生成HTML输出,该输出对于您要发送到服务器的所有元素具有以下语法:

<input name="Employees.Index" value="1460543662419" type="hidden">
<input name="Employees[1460543662419].EmployeeId" value="1" type="hidden">
...other input elements you want to send to the server...
<label>Emp1</label>

Source

首先是一个隐藏字段,其中包含来自上述尝试解决方案的生成索引。 下一个包含您要发布的对象的属性(这里我使用了EmployeeId)。它使用您之前隐藏的索引。 最后我用一个标签来显示一些名字。

所以我只需要用一行代码扩展上面提到的解决方案:

var dummyindex = (new Date()).getTime();
var inputindexfield = '<input type="hidden" name="Employees.Index" value="' + dummyindex + '" />';

如果你不能使用下面提到的链接中的解决方案,希望它有所帮助:)

Tried Solution