我正在尝试将一组单选按钮绑定到我的模型中的值。通常情况下这很容易做到,但我试图改变一点,所以它的工作方式就像这样。 IsEventsRegistration
是一个Int,可能的选择是0 - 5.我希望首先向用户显示3个单选按钮:
如果IsEventsRegistration
为0 - 请选择第一个单选按钮
如果IsEventsRegistration
为1 - 请选择第二个单选按钮
如果IsEventsRegistration
是> 1 - 选择第三个单选按钮
然后显示另一组4个用jquery隐藏的单选按钮。我可以用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,但c#答案同样好
答案 0 :(得分:2)
由于您可以使用javascript,这是我可能会推荐的。让2+值的无线电不属于绑定到IsEventsRegistration.
的无线电组的一部分当“点击”时显示额外值,使用户能够选择其中一个,甚至默认无线电选择到列表中的第一个。如果事先经过检查,请不要忘记“取消选中”0或1无线电。如果“点击”0或1,则折叠更多选项组。
如果“show more”收音机不是Model组的一部分,您不必在控制器中执行任何特殊操作来解析其中的值。
对于初始绘图,只需进行$(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');
});
答案 1 :(得分:0)
我想不出怎么做你想要的......不知道它是否可能......但我可以建议你一些解决方法。
只需在模型中创建2个属性(ViewModel):一个名为IsEventsRegistration
,另一个名为IsEventsRegistrationAdvaced
。
然后,将第二个属性用于隐藏的无线电。
使用jQuery,取消隐藏第二组radiobuttons并选择第一组。
这样,一旦回发到服务器......你将有2个值,如果你需要保存到数据库中的单个字段,你可以在控制器动作中添加逻辑来检查要保存的内容。 / p>
如果你需要编辑它,你需要一些JS来设置你的radiobuttons的当前状态,然后JS逻辑将与创建视图中的相同。
希望这有帮助!
答案 2 :(得分:0)
这是不可能的,单选按钮可供选择。
我会将单选按钮划分为两个绑定到不同模型属性的组,并处理控制器中的数据。
型号:
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;
...
}