gpt4 book ai didi

c# - 如果缺少 0 索引, Controller 将忽略列表属性

转载 作者:可可西里 更新时间:2023-11-01 10:41:01 28 4
gpt4 key购买 nike

我正在用 c# .net mvc 构建一个网络表单,使用 mongodb 来存储信息。该表单使用一个公司对象,该对象具有一个地址列表属性,称为 addressdata。提交表单时,公司对象被发送到 Controller ,然后更新插入到 MongoDB 中。输入名称的形式为

<input type="text" name="Company.addressdata[a].city" />

其中“a”是列表中的索引。这一切都很好!地址对象列表在提交时创建并插入到 mongoDB 中。

但是,我刚刚添加了删除地址的功能,现在我遇到了麻烦。我注意到当用户删除第一行时,之后的所有行都将丢失。因此,如果他们删除 0 索引,Company 对象将不会填充地址列表,因此它们不会进入 MongoDB。

有没有办法解决这个问题?这是它设计的工作方式吗?使用新索引对以下所有行重新编号似乎太多了,但这是需要的吗?还是有别的办法?

最佳答案

根据我的经验,这是设计使然。索引必须从 0 开始,否则您必须使用特殊元素为每个索引定义自己的索引。

本文展示了一个例子:http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/

<form method="post" action="/Home/Create">

<input type="hidden" name="products.Index" value="cold" />
<input type="text" name="products[cold].Name" value="Beer" />
<input type="text" name="products[cold].Price" value="7.32" />

<input type="hidden" name="products.Index" value="123" />
<input type="text" name="products[123].Name" value="Chips" />
<input type="text" name="products[123].Price" value="2.23" />

<input type="hidden" name="products.Index" value="caliente" />
<input type="text" name="products[caliente].Name" value="Salsa" />
<input type="text" name="products[caliente].Price" value="1.23" />

<input type="submit" />
</form>

所以你有两种选择:

  1. 删除时更新索引,或者
  2. 定义任意索引

关于c# - 如果缺少 0 索引, Controller 将忽略列表属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43881528/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com