ASP.NET MVC DefaultModelbinderは、ポスト上のバインディングプロパティではありません
-
11-09-2019 - |
質問
私は私が喫煙している本当に奇妙な問題に直面しています。
GETでコントローラーから正しく入力される強くタイプされたビューがあるかなり簡単なシナリオがありますが、フォームをコントローラーに投稿すると、Reqeustはすべての正しい値と正しいキー名でいっぱいですデフォルトのモデルバインダーのモデルオブジェクトのいずれかを正しく設定すると、DMBは正しいオペラを作成しますが、プロパティのいずれにも浸透することはなく、すべてデフォルトの状態です。
これは以前に機能していましたが、私が考えることができる唯一の変更は、私がカスタムモデルバインダーを試したことでした(その後削除しました;私がまだそれを使用していないことを確認するためにダブルチェックしました)。小道具の。
何かご意見は?
解決 2
とった。このモデルは、Mdoelバインダーがそれを住む能力に自然に影響を与えた方法でリファクタリングされていました。
他のヒント
非常によく似たシナリオ - デフォルトモデルビンダーは、本質的に - モデルにバインディングされていないということです。
モデル
Public Property ArbitraryName1 As Integer
Public Property Answer As String
Public Property ArbitraryName2 As Boolean
意見
<p/> ... @Model.ArbitraryName1
<p/> Answer: @Html.TextBoxFor(Function(model) model.Answer)
<p/> ... @Html.CheckBoxFor(Function(model) model.ArbitraryName2)
コントローラ
<HttpPost()>
Function Index(answer As Model) As ActionResult
' answer is Nothing
End Function
(ASP.NET MVCを使用)
入力パラメーションの名前は、オブジェクトの一部のプロパティ名と等しくなる必要はありません。名前 - >値の配列として来るすべてのデータとデフォルトのバインディングは、名前を使用して関係を機能させることに注意してください。
この動作は、クラスの上部からさらに下に2つのプロパティを移動することで発生しました。これが3番目のプロパティのバインディングが機能するのを止めた理由をまだ解決できません(したがって、これは「注意する」ほど解決策ではありません)が、変更を複数回繰り返し、バインディングが出るたびに変更を繰り返しました。働かないように働いています。また、この変更を行った後、バインディングが再び作業を開始するための解決策を「きれい」にしなければならないことがありました。