3

私は本当に奇妙な問題に直面しています。

GET のコントローラーから正しく入力された強く型付けされたビューがあるというかなり単純なシナリオがありますが、フォームをコントローラーにポストすると、リクエストはすべての適切な値と適切なキー名でいっぱいになります。私のモデルオブジェクトの1つを正しく移入するためのデフォルトのモデルバインダー、およびDMBは正しいオブジェクトを作成しますが、プロパティのいずれも移入しません。それらはすべてデフォルトの状態です。

これは以前は機能していましたが、私が考えることができる唯一の変更は、カスタムモデルバインダーを試したことでした(その後、それを削除しました。まだ使用していないことを確認するために再確認しました)。モデルをリファクタリングして、いくつかの基本クラスを持つようにしました小道具の。

何かご意見は?

4

4 に答える 4

3

バインドされたモデル オブジェクトにそのプロパティの 1 つと同じ名前を付けると、DefaultModelBinder が基本的にモデルにバインドされないという非常によく似たシナリオが発生します。

モデル

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 3 を使用)

于 2012-12-14T11:16:27.993 に答える
0

とった。モデルは、mdoel バインダーがデータを取り込む機能に自然に影響を与える方法でリファクタリングされていました。

于 2009-06-07T02:44:21.257 に答える
0

入力パラメーターの名前は、オブジェクトのプロパティ名と同じである必要はありません。name -> value の配列として来るすべてのデータと、デフォルトのバインディングは関係を機能させるために名前を使用することに注意してください。

于 2013-08-16T12:16:54.230 に答える
0

クラスの一番上からさらに下に 2 つのプロパティを移動することで、この動作を発生させました。これが3番目のプロパティのバインディングを停止させた理由をまだ理解できません(したがって、これは「注意する」ほどの解決策ではありません)が、変更を複数回繰り返し、バインディングが働いて働かない。また、この変更を行った後、バインディングが再び機能するようにするには、ソリューションを「クリーン」にする必要があることもわかりました。

于 2015-09-07T21:07:52.517 に答える