试图将其表述为一个问题,因为在我目前正在处理的问题中,我不确定使用 ModelBindingContext 给我带来的好处超过了 ControllerContext。每个示例似乎都在说使用 ModelBindingContext 获取值更好,但并不清楚为什么(在我的情况下,它似乎不会做我想要的)。
注意:这个例子是为了说明这个解释而简化的,以说明我在这两个方面遇到的主要问题,在完整场景中还有很多,这意味着默认模型绑定器是一个选项。
在最基本的情况下,我们发布了以下(子集)FORM数据:
id=Question12 value='x'
id=Question45 value='y'
id=Question999 value='z'
如果我要访问“ControllerContext”中的请求对象,我可以访问 FORM.Keys 以获取所有发布的数据键,我会知道有 3 个和它们的 id(并且可以获取它们的值)。这真的很容易。每页可能发布 0 个或 1+ 个问题(问题类型对于为什么默认模型活页夹对我们不起作用很重要,但在这个问题中很重要)。
如果我在“ModelBindingContext”上使用“ValueProvider”,我可以调用“ContainsPrefix”或“GetValue”,就是这样。所以我可以找出它是否具有“问题*”的值 - 但要找到发布的 3 个值,看来我必须通过检查“问题 1”到“问题 999”才能找到 3 个值,但我仍然不知道我有没有全部!
正如我所说的很多我读过的例子都说你应该考虑使用 ModelBindingContext,但它似乎在功能上受到限制,所以只是想知道如果我们使用 ControllerContext 是否会将自己编码成一个洞?