只允许使用RadioButtonFor选择一个radiobutton

时间:2016-08-01 23:52:39

标签: c# asp.net-mvc razor

我的视图有一个绑定模型,每个用户区都有一个复选框,而DefaultRegion有一列用户。 DefaulRegion将是单选按钮,因为用户只能使用一个默认区域。

我在我的视图中有这个代码 -

@for (int i = 0; i < @Model.UserRegions.Count(); i++)
 {
  @Html.LabelFor(m => m.UserRegions[i].IsActive, Model.UserRegions[i].RegionName)
  @Html.HiddenFor(m => m.UserRegions[i].RegionId)
  @Html.CheckBoxFor(m => m.UserRegions[i].IsActive)
  @Html.RadioButtonFor(m => m.UserRegions[i].DefaultRegion, Model.UserRegions[i].RegionId)
}

我的模型看起来像 -

public class UserRegion
{
     public int RegionId { get; set; }
     public string RegionName { get; set; }
     public bool IsActive { get; set; }
     public string DefaultRegion { get; set; }
}

在控制器中获取数据的代码如下所示 -

var usrRegions = (from r in db.REGIONs.Where(r => r.ACTIVE_INDICATOR == "Y")
                    join ur in db.USER_REGION.Where(u => u.USER_ID == userInfo.user.USER_ID) on r.REGION_ID equals ur.REGION_ID into urs
                   from ur in urs.DefaultIfEmpty()
                   select new UserRegion()
                   {                                      
                      RegionId = r.REGION_ID,
                      RegionName = r.REGION_NAME,
                      IsActive = (ur.USER_ID != null),
                      efaultRegion = (ur.DEFAULT_USER_REGION_INDICATOR != null?"D":"N")
                                  }).ToList();

                userInfo.UserRegions = usrRegions;

这会正确显示复选框和单选按钮,但允许选择多个单选按钮。我明白,我应该以某种方式分配GroupName,以便它在同一组中考虑它们,并在选择新的单选按钮时取消选择所有无线电。但我无法弄清楚这一点,将复选框保持在绑定模式。

对此事的任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

您只需要确保所有单选按钮具有相同的名称。这将使它像一个单选按钮组,只能选择一个。

@for (int i = 0; i < @Model.UserRegions.Count(); i++)
{
    @Html.LabelFor(m => m.UserRegions[i].IsActive, Model.UserRegions[i].RegionName)
    @Html.HiddenFor(m => m.UserRegions[i].RegionId)
    @Html.CheckBoxFor(m => m.UserRegions[i].IsActive)
    @Html.RadioButtonFor(m => m.UserRegions[i].DefaultRegion, 
                           Model.UserRegions[i].RegionId, new { @Name = "SelectedRegion" })

}

现在,对于单选按钮选择的模型绑定,请确保视图模型中的属性具有相同的名称(SelectedRegion

public class UserInfoViewModel
{
  public List<UserRegion> UserRegions {set;get;}
  public string SelectedRegion {set;get;}
}