我有一个EditorFor模板,它绑定到一个列表并创建带有name属性的html元素,这些元素表示数组中的元素,例如。
<input id="Contacts_0__Uid" name="Contacts[0].Uid" type="hidden"
value="sdfsdfs6-f1a1-44e4-af30-9cfb00a8d654">
<input id="Contacts_1__Uid" name="Contacts[1].Uid" type="hidden"
value="f9826696-f1a1-44e4-af30-9cfb00a8d654">
<input id="Contacts_2__Uid" name="Contacts[2].Uid" type="hidden"
value="23423skf-f1a1-44e4-af30-9cfb00a8d654">
我有一段javascript从表中删除一行。结果是当表单发布到服务器时,列表的数组索引不同步,例如:
<input id="Contacts_1__Uid" name="Contacts[1].Uid" type="hidden" value="f9826696-f1a1-44e4-af30-9cfb00a8d654">
<input id="Contacts_3__Uid" name="Contacts[2].Uid" type="hidden" value="23423skf-f1a1-44e4-af30-9cfb00a8d654">
没有元素索引0.当索引不同步时,模型绑定器似乎忽略了这个列表。
我知道我可能会写一些javascript来更改名称属性,但我想知道在服务器上是否有这种方法?
答案 0 :(得分:0)
答案很晚,但它可以帮助其他人。
不要使用javascript删除DOM元素(行)。相反,将它们标记为使用自定义属性删除,例如&#34; destroy&#34;从视图中隐藏。这样,它们将被提交回服务器,您的阵列将保持不变。
然后,在服务器端,你可以评估整个数组,检查所有元素&#34; destroy&#34;属性并在持久化对象图之前执行实际的删除逻辑。