1

ラジオ ボタンのグループをモデルの値にバインドしようとしています。通常、これは簡単に実行できますが、このように機能するように少し変更しようとしています。 IsEventsRegistrationは Int であり、可能な選択肢は 0 ~ 5 です。最初に 3 つのラジオ ボタンをユーザーに表示する必要があります。

0 の場合IsEventsRegistration- 最初のラジオ ボタンを選択

1 の場合IsEventsRegistration- 2 番目のラジオ ボタンを選択

> 1 の場合IsEventsRegistration- 3 番目のラジオ ボタンを選択します

すると、jquery で非表示になっていた 4 つのラジオ ボタンの別のグループが表示されます。jQuery を使用して、ラジオ グループの表示と非表示をうまく処理できます。私の問題は-これらのラジオボタンを作成の値にバインドする方法があるIsEventsRegistrationので、値が >1 の場合、ラジオ2 Or 3 Or 4 Or 5がチェックされ、正しいラジオがチェックされますか?

@Html.RadioButtonFor(Function(x) x.IsEventsRegistration , 0) <a>...</a><br />
@Html.RadioButtonFor(Function(x) x.IsEventsRegistration , 1) <a>...</a><br />
@Html.RadioButtonFor(Function(x) x.IsEventsRegistration, 2 Or 3 Or 4 Or 5) <a>...</a><br />

<div class="hideRadios">
   @Html.RadioButtonFor(Function(x) x.IsEventsRegistration , 2) <a>...</a><br />
   @Html.RadioButtonFor(Function(x) x.IsEventsRegistration , 3) <a>...</a><br />
   @Html.RadioButtonFor(Function(x) x.IsEventsRegistration , 4) <a>...</a><br />
   @Html.RadioButtonFor(Function(x) x.IsEventsRegistration , 5) <a>...</a><br />
</div>

これは VB.Net ですが、ac# の回答も同様に優れています

4

3 に答える 3

2

あなたはJavaScriptを使うことができるので、ここに私がおそらくお勧めするものがあります. 2 つ以上の値のラジオを、バインドされたラジオのグループの一部にしないようにしIsEventsRegistration.ます。それが「クリック」されると、追加の値が表示され、ユーザーがそれらの 1 つを選択できるようになります。リスト。事前にチェックした場合は、0 または 1 のラジオを「チェック解除」することを忘れないでください。0 または 1 が「クリック」されると、そのオプション グループが折りたたまれます。

Model グループの一部ではない "show more" ラジオを使用すると、コントローラーから値を解析するためにコントローラーで特別なことを行う必要はありません。

最初の描画で$(function () {...})は、「さらに表示」ラジオが選択されているかどうかを確認し、外側のラジオ ボタンにチェックを入れて .show 機能をトリガーします。

だいたい

@Html.RadioButtonFor(Function(x) x.IsEventsRegistration , 0) <a>...</a><br />
@Html.RadioButtonFor(Function(x) x.IsEventsRegistration , 1) <a>...</a><br />
<input id="more" type="radio" name="show-others">

<div class="hideRadios">
  @Html.RadioButtonFor(Function(x) x.IsEventsRegistration , 2) <a>...</a><br />
  @Html.RadioButtonFor(Function(x) x.IsEventsRegistration , 3) <a>...</a><br />
  @Html.RadioButtonFor(Function(x) x.IsEventsRegistration , 4) <a>...</a><br />
  @Html.RadioButtonFor(Function(x) x.IsEventsRegistration , 5) <a>...</a><br />
</div>

$(document).on('click', '#more', function () {
  $(this).siblings('input:radio').prop('checked', false);
  $('.hideRadios').show();
});

$(function () {
  if ($('.hideRadios input:checked').val() > 1)
    $('#more').trigger('click');
});
于 2012-12-14T16:57:29.907 に答える
0

それは不可能です。ラジオ ボタンは、単一の選択オプション用に用意されています。

ラジオ ボタンを、異なるモデル プロパティにバインドされた 2 つのグループに分割し、コントローラーでデータを処理します。

モデル:

class MyModel {
  ...
  public int IsEventRegistrationMain { get; set; }
  public int IsEventRegistrationDetail { get; set; }
  ...
}

意見:

@Html.RadioButtonFor(x => x.IsEventRegistrationMain , 0) <a>...</a><br />
@Html.RadioButtonFor(x => x.IsEventRegistrationMain , 1) <a>...</a><br />
@Html.RadioButtonFor(x => x.IsEventRegistrationMain , 2) <a>...</a><br />

<div class="hideRadios">
  @Html.RadioButtonFor(Function(x) x.IsEventRegistrationDetail , 2) <a>...</a><br />
  ...

コントローラ:

public ActionResult Process(MyModel model) {
  ...
  var IsEventRegistration = model.IsEventRegistrationMain == 2 ? model.IsEventRegistrationDetail : model.IsEventRegistrationMain;
  ...    
}
于 2012-12-14T16:55:25.347 に答える
0

あなたが望むことを行う方法を考えることはできません...それが可能かどうかもわかりません...しかし、回避策を提案できます。

モデル (ViewModel) に 2 つのプロパティを作成するだけIsEventsRegistrationですIsEventsRegistrationAdvaced

次に、非表示の無線に 2 番目のプロパティを使用します。

jQuery を使用して、ラジオボタンの 2 番目のグループを再表示し、最初のグループを選択します。

このように、サーバーにポストバックすると... 2 つの値が得られます。データベース内の 1 つのフィールドに保存する必要がある場合は、コントローラー アクションにロジックを追加して、保存するものを確認できます。

これを編集する必要がある場合は、ラジオボタンの現在の状態を設定するためにいくつかの JS が必要になります。その後、JS ロジックはビューの作成と同じになります。

お役に立てれば!

于 2012-12-14T16:51:20.610 に答える