我正在尝试根据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">');
答案 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>
首先是一个隐藏字段,其中包含来自上述尝试解决方案的生成索引。 下一个包含您要发布的对象的属性(这里我使用了EmployeeId)。它使用您之前隐藏的索引。 最后我用一个标签来显示一些名字。
所以我只需要用一行代码扩展上面提到的解决方案:
var dummyindex = (new Date()).getTime();
var inputindexfield = '<input type="hidden" name="Employees.Index" value="' + dummyindex + '" />';
如果你不能使用下面提到的链接中的解决方案,希望它有所帮助:)