1. ホーム
  2. asp.net

[解決済み] CheckBoxForが追加の入力タグをレンダリングする理由と、FormCollectionを使用して値を取得する方法を教えてください。

2022-07-05 09:10:42

質問

ASP.NET MVC アプリで、次のコードを使用してチェックボックスをレンダリングしています。

<%= Html.CheckBoxFor(i=>i.ReceiveRSVPNotifications) %>

さて、このようにレンダリングすると 両方とも をレンダリングしています。問題は、FormCollectionを使用してチェックボックスから値を取得しようとしたときです。

FormValues["ReceiveRSVPNotifications"]

私は、値 "true,false" を取得します。レンダリングされたHTMLを見ると、以下のようになっています。

 <input id="ReceiveRSVPNotifications" name="ReceiveRSVPNotifications" value="true" type="checkbox">
 <input name="ReceiveRSVPNotifications" value="false" type="hidden">

というわけで、FormValuesコレクションは、この2つの値が同じ名前なので、結合しているようです。

何かアイデアはありますか?

どのように解決するのですか?

こちらをご覧ください。

http://forums.asp.net/t/1314753.aspx

<ブロッククオート

これはバグではなく、実際にはRuby on RailsとMonoRailの両方が採用している方法です。 RailsとMonoRailの両方が採用している方法です。

チェックボックス付きのフォームを送信したとき、その値が投稿されるのは のみ投稿されます。ですから、チェックボックスをオフにしたままにしておくと、何もサーバーに送られません。 何もサーバーに送信されません。 を送信することになります。隠された入力はチェックボックスと同じ名前であるため という名前がついているので、チェックボックスがチェックされていない場合でも、サーバには false」がサーバに送信されます。

チェックボックスがチェックされると、モデルバインダーは自動的に から'true'を抽出します。