为什么在自定义模型绑定器中使用“ModelBindingContext”而不是“ControllerContext”?

时间:2012-10-26 13:41:09

标签: c#-4.0 asp.net-mvc-4 modelbinders

尝试将此短语作为一个问题,因为在我正在处理的问题中,我不确定使用ModelBindingContext对ControllerContext有什么好处。每个例子似乎都说使用ModelBindingContext获取值更好,但不清楚为什么(在我的情况下几乎看起来它不会做我想要的)。

注意:这个例子在这个解释中被简化,以说明我对这两个问题的主要问题,在完整场景中还有更多,这意味着默认的模型绑定器是一个选项。

在最基本的情况下,我们将以下(部分)FORM数据发布在:

id=Question12 value='x'
id=Question45 value='y'
id=Question999 value='z'

如果我要访问“ControllerContext”中的Request Object,我可以到FORM.Keys获取已发布的所有数据键,我知道有3个和他们的id(并且可以得到他们的值)。这真的很容易。每页可能会发布0或1个以上的问题(问题类型对于为什么默认模型绑定器不适用于我们很重要,但在此问题中很重要)。

如果我在“ModelBindingContext”上使用“ValueProvider”,我可以调用“ContainsPrefix”或“GetValue”,就是这样。所以我可以找出它是否具有“问题*”的值 - 但是为了找到发布的3个值,看起来我将不得不通过“Question999”检查“Question1”只是为了找到3个值而且我仍然我不知道我是否拥有它们!

正如我所说的,我读过的很多例子都说你应该考虑使用ModelBindingContext,但它似乎只限于功能,所以只是想知道如果我们使用ControllerContext而不是编写自己的漏洞?

0 个答案:

没有答案