0

我有一个强类型视图,其中传入的模型属性之一是对象列表。我正在使用工作正常的 BeginCollectionItem 助手处理输入到此列表的动态绑定。但是,我还希望最初在视图上显示一组输入,这些输入将绑定到列表中的“第一个”对象。

我试过只复制 BeginCollectionItem 生成的输入,但这似乎不起作用。

它生成具有名称属性的输入,例如

invoiceItems[ef43a8f2-c6b7-4791-bf7f-6764c8e3fc9b].Description
invoiceItems[ef43a8f2-c6b7-4791-bf7f-6764c8e3fc9b].Cost

所以我手动将 2 个输入放在具有名称属性的视图上

invoiceItems[firstOne].Description 
invoiceItems[firstOne].Cost

但是在提交表单后它没有出现在控制器上的模型中。

我不能只在视图加载时插入一个 BeginCollectionItem 方式,因为必须以不同方式显示初始项目。

4

2 回答 2

1

不完全回答你的问题,但我希望它能解决你的问题

您可以尝试更改模型,而不是更改视图中的名称。添加一个boolean属性IsFirst。我相信您知道controller(或实例化模型的任何地方)哪个是第一个。将第一项设置IsFirst为 true。

于 2012-06-21T03:08:06.643 回答
0

我想到了。我在手动输入 BeginCollectionItem 所做的事情时走在了正确的轨道上,我只是错过了一部分。您需要另一个隐藏输入来告诉绑定您正在使用的索引是什么。

所以以下工作完美

<input type="hidden" name="invoiceItems.index" autocomplete="off" value="firstOne" />
<input type="text" placeholder = "ex. Labour" id="invoiceItems_firstOne__Description" name="invoiceItems[firstOne].Description" />
<input type="text" placeholder = "ex. $15" id="invoiceItems_firstOne__Cost" name="invoiceItems[firstOne].Cost" />

我刚刚将顶部隐藏的输入添加到我之前拥有的内容中,一切都很好。

于 2012-06-21T16:38:22.377 回答