0

私のコードは次のようになります。

<div>
 <label>
      @Html.CheckBoxFor(x=>x.IsEnabled)
      IsEnabled</label>     
</div>

問題は、CheckBoxForがこのフィールドの非表示を作成しているにもかかわらず、ボックスがチェックされている場合でも、変更された値をサーバーに送信していないことです。チェックを外しても、値はtrueになります。このフィールドはフォーム内に表示されます。これは、送信を使用して送信するのではなく、シリアル化(jqueryシリアライザーを使用)してから送信します。

問題は、シリアライザーがすべての要素のvalueプロパティを取得し、チェックボックスのvalueプロパティが切り替え時に変更されないことです。チェックされたプロパティは変更されているプロパティです。

修正する方法はありますか?

4

3 に答える 3

0

モデルを名前でバインドする通常のHtml入力タイプを使用する場合。それは完璧に機能します:

<label>
   <input id="IsEnabled" name="ISEnabled" type="checkbox" value="true" />
       IsEnabled
 </label>
于 2013-01-10T09:17:14.237 に答える
0

残念ながら、場合によっては、CheckBoxFor でこれをハックする方法はありませんが、次のことができます。

@Html.CheckBox("IsEnabled", Model.IsEnabled)

代わりに、それはより良く機能するはずです。Checkboxfor は、フォームを送信するときに使用するいくつかの隠し変数を作成します。

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

これは、jquerish プラグインで問題になる可能性があります。特に単純なプロパティ マッピングを行うだけなので、シリアル化するものは特にそうです。

于 2013-01-09T11:58:13.603 に答える
0

あなたはこのように使うことができます

@Html.CheckBoxFor(model => model.Active.Value)

これが役立つと思います。

于 2013-01-10T10:47:31.547 に答える