0

渡されるモデルのプロパティの 1 つがオブジェクトのリストである、厳密に型指定されたビューがあります。正常に動作する BeginCollectionItem ヘルパーを使用して、このリストへの入力の動的バインディングを処理しています。ただし、リスト内の「最初の」オブジェクトにバインドするビューに表示される入力のグループを最初に表示したいと考えています。

BeginCollectionItem が生成する入力をコピーしようとしましたが、うまくいかないようです。

次のような名前属性を持つ入力を生成します

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

そのため、名前属性を使用してビューに2つの入力を手動で配置しました

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

フォームを送信した後、コントローラーのモデルに表示されませんでした。

最初の項目を別の方法で表示する必要があるため、ビューが読み込まれるときに BeginCollectionItem の方法を 1 つだけ挿入することはできません。

4

2 に答える 2

1

あなたの質問に対する正確な回答ではありませんが、問題が解決することを願っています。

ビューで名前を変更する代わりに、モデルを変更してみてください。booleanプロパティを追加しますIsFirstcontrollerで(またはモデルがインスタンス化されている場所で) どれが最初かを知っていると思います。最初の項目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 に答える