私が現在取り組んでいる問題では、ModelBindingContext を使用すると ControllerContext よりもどのような利点があるのか わからないため、これを質問として表現しようとしています。すべての例は、値を取得するために ModelBindingContext を使用する方が優れていると言っているようですが、その理由は明確ではありません (そして、私の状況では、それは私が望むことをほとんどしていないようです)。
注: この例は、この 2 つの主要な問題を説明するために簡略化したものです。完全なシナリオではさらに多くのことがあり、既定のモデル バインダーがオプションであることを意味します。
最も基本的なのは、次の (サブセット) FORM データがポストされていることです。
id=Question12 value='x'
id=Question45 value='y'
id=Question999 value='z'
「ControllerContext」内の Request オブジェクトにアクセスすると、FORM.Keys にアクセスして、投稿されたすべてのデータ キーを取得でき、3 つの ID とその ID があることがわかります (値を取得できます)。それは本当に簡単でしょう。ページごとに 0 個または 1 個以上の質問が投稿される可能性があります (質問の種類は、既定のモデル バインダーが機能しない理由として重要ですが、この問題では重要です)。
「ModelBindingContext」で「ValueProvider」を使用すると、「ContainsPrefix」または「GetValue」を呼び出すことができます。それだけです。したがって、「Question*」の値があるかどうかを調べることができましたが、投稿された 3 つの値を見つけるには、3 つの値を見つけるためだけに「Question1」から「Question999」までをチェックする必要があるように見えますが、それでも私がそれらすべてを持っていたかどうかわからないでしょう!
私が読んだ多くの例では、ModelBindingContext の使用を検討する必要があると言っていますが、機能が制限されているようです。