我正在尝试将一组单选按钮绑定到我的模型中的值。通常情况下,这很容易做到,但我正在尝试更改它,使其工作起来像这样。IsEventsRegistration是一个整数,可能的选项是0- 5。我希望首先向用户显示3个单选按钮:
如果IsEventsRegistration为0-选择第一个单选按钮
If IsEventsRegistration is 1-选择第二个单选按钮
If IsEventsRegistration is >1-选择第三个单选按钮
然后,用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,但c#答案也一样好
发布于 2012-12-15 00:57:30
既然你可以使用javascript,下面是我可能推荐的。当“点击”时,让2+值的单选按钮不属于绑定到IsEventsRegistration.的单选项组中的一部分,显示额外的值,使用户能够选择其中之一,甚至将单选按钮选择默认到列表中的第一个。如果事先勾选了0或1,不要忘记“取消勾选”它。如果“单击”0或1,则折叠“更多选项”组。
由于"show more“单选框不是Model组的一部分,您不应该在控制器中做任何特殊操作来解析出它的值。
对于初始绘图,只需进行$(function () {...})检查以查看是否选择了任何"show more“无线电,然后勾选外部单选按钮以触发.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-15 00:51:21
我不知道该怎么做你想要的…甚至不知道这是否可能…但我可以向您建议一些解决方法。
只需在模型(ViewModel)中创建两个属性:一个名为IsEventsRegistration,另一个名为IsEventsRegistrationAdvaced。
然后,使用隐藏无线电的第二个属性。
使用jQuery,取消隐藏第二组单选按钮并选择第一组。
这样,一旦发送回服务器...您将有两个值,如果您需要保存到数据库中的单个字段,您可以在控制器操作中添加逻辑,以检查要保存的内容。
如果您随后需要对其进行编辑,则需要一些JS来设置单选按钮的当前状态,然后JS逻辑将与create视图中的逻辑相同。
希望这能有所帮助!
发布于 2012-12-15 00:55:25
这是不可能的,单选按钮只有一个选项。
我会将单选按钮分成两组,分别绑定到控制器中不同的模型属性和处理数据。
型号:
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;
...
}https://stackoverflow.com/questions/13882621
复制相似问题