9

私はWebAPIを開発に組み込んでおり、すべてのフォーム送信をWebAPIコントローラーに投稿しています。チェックボックスがモデルに正しくバインドされていないことに気づきました。私は以下を使用するフォームを持っています:

@Html.CheckBoxFor(m => m.HasVideo)

チェックボックスと非表示のフォーム要素を生成します。チェックボックス(「true」の値を意味する)をチェックすると、WebAPI投稿のモデルバインディングはHasVideoプロパティのfalseを反映します。メソッド全体を従来のMVCコントローラーに移行しましたが、バインディングは期待どおりに機能します。

これに対する回避策はありますか、それとも私が見逃しているものがありますか?

4

3 に答える 3

7

この html ヘルパーを使用しないでください:

@Html.CheckBoxFor(m => m.HasVideo)

代わりにこれを試してください:

<input id="HasVideo" name="HasVideo" type="checkbox" value="true" @(((Model!=null) && Model.HasVideo) ? "checked=\"checked\"" : "" ) />
于 2013-07-17T11:07:56.627 に答える
1

私もこれを見たことがあります。これについてはウェブ上にあまり情報がなく、どこかにもっと文書化されているはずです。標準コントローラーは、両方が見つかった場合、false よりも true を優先しますが、API コントローラーは、最後に見つかった値を使用しているように見えます。

このページには、この仮説を裏付ける情報が含まれています: http://blogs.msdn.com/b/jmstall/archive/2012/04/16/how-webapi-does-parameter-binding.aspx

于 2013-07-17T11:01:19.880 に答える
0

この問題は以前に見られ、通常は ViewData/ViewBag の干渉であり、通常はデバッグが困難です。

問題を引き起こしている関数に ViewBag.Clear/ViewData.Clear を追加できます。

乾杯、J

于 2013-02-03T17:30:03.197 に答える