2

私は現在、MVCの内部をざっと見ていて、プロパティとプロパティFormCollectionの意味と予想される使用法の違いについて疑問に思っています。それはaであり、ですが、投稿中に送信されたフォームフィールドを確認する必要がある場合、なぜ一方のプロパティを他方よりも選択するのでしょうか。特定のキーの存在をすばやく確認するために使用するのは単なる慣例ですか?フォームの1つに複数の送信ボタンがあり、実際にフォームの送信に使用されたものをすばやく確認するために使用していますが、実際に存在する場合は、2つの間に意図された違いについて考えるようになりました。AllKeysKeysAllKeysstring[]KeysKeysCollectionAllKeysAllKeys

ほとんどの場合、モデルバインディングを利用して、ViewModelまたはCommandオブジェクトをコントローラーアクションに戻しますがFormCollection.Keys、特に私が気付いていない特定のユースケースはありますか?NameValueCollection内部をざっと覗いてみると、実際には文字列のコレクションであるかのようにNameObjectCollectionBase見えます。1つはおそらくフレームワークの新しいバージョンで導入され、もう1つは下位互換性のために保持されていましたか?KeysCollectionstring[]

4

1 に答える 1

4

これは純粋な継承の産物のようです。FormsCollectionの継承図チャートを見てください(http://msdn.microsoft.com/en-us/library/system.web.mvc.formcollection(v=vs.108).aspx

FormsCollectionは、 NameObjectCollectionBaseから継承するNameValueCollectionから継承します。キーNameObjectCollectionBaseで定義され、 AllKeysをすべてのキーの文字列表現として定義するNameValueCollectionによって継承されます。NameValueCollectionの唯一の目的は、キーを文字列として公開することであるようです(MSDN:キーまたはインデックスのいずれかでアクセスできる関連する文字列キーと文字列値のコレクションを表します)

それ以上のものがあるかもしれませんが、これは私がこれまでに見つけたものです。あなた(または他の誰か)が他の説明を見つけたら投稿してください

于 2013-02-06T14:00:53.957 に答える