2

パラメータのないアクションがあります。このアクションに対して GET を行うビューにフォームがあります。アクションでは、オブジェクトをインスタンス化し (DB からいくつかのデフォルトを取得できるように)、次に DefaultModelBinder を使用する UpdateModel() を使用します。

したがって、私のモデルには次のプロパティ def があります。

public string[] AI { get; set; }

フォームからのとりわけ私のクエリ文字列は次のとおりです。

?AI=12-345&AI=45-43&AI=48-546

アクションが UpdateModel() を呼び出した後、AI プロパティは null です! ただし、アクション定義を次のように変更すると:

MyAction(string[] AI)

次に、モデルのプロパティが期待されるように、AI パラメーターが入力されます。これはデフォルトのモデル バインダーのバグですか? プロパティを作成しようとしましたList<string>が、それもうまくいきませんでした。

何か案は?

4

1 に答える 1

1

私の人生で最大のホーマー DOH。私がしていたことは問題なく、投稿で主張したように DefaultModelBinder を使用していれば、MVC はそれをうまくバインドしていたでしょう。ただし、バインドが必要なモデルに余分な値を追加してもバインドに失敗しました (単純なブール値ですか?) さらに深く掘り下げたところ、カスタム バインダーがモデルの型に対して MVC に登録されていて、各プロパティに対して処理を行っていることがわかりました。その結果、私の新しいモデルには何もしません:(。

したがって、この話の教訓は、バインダー登録をチェックすることを忘れないこと、または単に登録を使用せず、常に明示的に述べるということです。

于 2012-10-31T11:14:37.230 に答える