我目前正在研究MVC中的FormCollection,想知道AllKeys和Keys属性在含义和预期用法上的区别。我知道AllKeys是一个string[],Keys是一个KeysCollection,但是如果您必须查看在发布过程中提交的表单域,为什么要选择一个属性而不是另一个属性呢?使用AllKeys快速检查是否存在特定的键只是一种惯例吗?我的一个表单上有多个提交按钮,正在使用AllKeys快速检查哪个按钮实际用于提交表单,但这让我思考了这两个按钮之间的意图差异,如果确实存在差异的话。
大多数情况下,我将利用模型绑定并将ViewModel或命令对象传递回控制器操作,但是否有我不知道的FormCollection.Keys的特定用例?从NameValueCollection和NameObjectCollectionBase内部快速浏览一下,似乎KeysCollection实际上只是一个字符串集合,实际上更像是一个string[]。其中一个可能是在框架的较新版本中引入的,而另一个也是为了向后兼容而保留的?
发布于 2013-02-06 22:00:54
看起来这是一个纯继承的产品。请看一下FormsCollection (http://msdn.microsoft.com/en-us/library/system.web.mvc.formcollection(v=vs.108).aspx )的继承图
FormsCollection继承自NameValueCollection,后者继承自NameObjectCollectionBase.NameValueCollection继承并在NameObjectCollectionBase中定义了密钥,它将AllKeys定义为所有密钥的字符串表示。NameValueCollection的唯一目的似乎是将键公开为字符串(MSDN:表示可以通过键或索引访问的相关字符串键和字符串值的集合)
可能还有更多,但这就是我到目前为止发现的这一点。如果你(或其他任何人)发现任何其他解释,请发帖
https://stackoverflow.com/questions/14718308
复制相似问题