我的视图有一个绑定模型,每个用户区都有一个复选框,而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,以便它在同一组中考虑它们,并在选择新的单选按钮时取消选择所有无线电。但我无法弄清楚这一点,将复选框保持在绑定模式。
对此事的任何帮助表示赞赏。
答案 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;}
}