2

我目前正在 MVC 中四处寻找,想知道 the和属性FormCollection之间的含义和预期用法的差异。我知道这是一个并且是一个,但是如果您必须查看在帖子期间提交的表单字段,您为什么要选择一个属性而不是另一个属性?它只是用于快速检查特定密钥是否存在的约定吗?我的一个表单上有多个提交按钮,用于快速检查实际用于提交表单的按钮,但它让我想到了两者之间的预期差异,如果确实有的话。AllKeysKeysAllKeysstring[]KeysKeysCollectionAllKeysAllKeys

大多数时候,我将利用模型绑定并将 ViewModel 或 Command 对象传递回控制器操作,但是否有FormCollection.Keys我不知道的特定用例?从内部快速查看NameValueCollectionNameObjectCollectionBase它看起来好像KeysCollection实际上只是一个字符串的集合,实际上更像是一个字符串string[]。是否可能在框架的更高版本中引入了一个,而另一个也保留了以实现向后兼容性?

4

1 回答 1

4

看起来这是纯继承的产物。看一下 FormsCollection 的继承图(http://msdn.microsoft.com/en-us/library/system.web.mvc.formcollection(v=vs.108).aspx

FormsCollection继承自NameValueCollection,后者继承自NameObjectCollectionBaseNameObjectCollectionBase中定义并由NameValueCollection继承,NameValueCollection将AllKeys定义为所有键的字符串表示。NameValueCollection 的唯一目的似乎是将键公开为字符串(MSDN:表示可以使用键或索引访问的关联字符串键和字符串值的集合)

可能还有更多内容,但这是我迄今为止发现的。如果您(或任何其他人)发现任何其他解释,请发布

于 2013-02-06T14:00:53.957 回答