我使用mongodb在c#.net mvc中构建一个webform来存储信息。该表单与公司对象一起使用,该公司对象具有一个名为addressdata的地址列表属性。提交表单后,公司对象将发送到控制器,然后插入到MongoDB中。输入名称采用
形式class ArticlesController < ApplicationController
def index
@articles = Article.all
end
def show
@article = Article.find(params[:id])
end
def new
end
def create
@article = Article.new(article_params)
@article.save
redirect_to @article
end
private
def article_params
params.require(:article).permit(:title, :text)
end
end
&#34; a&#34;是列表中的索引。这一切都很棒!地址对象列表在提交时创建并插入到mongoDB中。
但是,我刚刚添加了删除地址的功能,现在我遇到了麻烦。我注意到当用户删除第一行时,后面的所有行都会丢失。因此,如果他们删除0索引,则公司对象将不会填充地址列表,因此它们不会进入MongoDB。
有办法解决这个问题吗?这是它的设计方式吗?使用新索引重新编号以下所有行似乎太多了,但它需要什么?或者还有另一种方式吗?
答案 0 :(得分:1)
根据我的经验,这是设计的。索引必须从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>
所以你有选择: