2016-08-01 35 views
0

私のビューには、ユーザー領域ごとにチェックボックスがあり、ユーザーに対してDefaultRegionの列が1つあります。 DefaulRegionはラジオボタンになります。これは、ユーザーがデフォルトリージョンを1つしか使用できないためです。RadioButtonForを使用して1つのラジオボタンのみを選択できるようにします

私は私の見解では、このコードを持っている -

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; 

この - コントローラにデータをフェッチするためのコードがどのように見える

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

-

@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) 
} 

私のモデルは次のようになりますチェックボックスとラジオボタンが正しく表示されますが、複数のラジオボタンを選択できます。私はGroupNameを何らかの形で割り当てて、同じグループ内でGroupNameを考慮し、新しいラジオボタンが選択されたときにすべてのラジオを選択解除する必要があることを理解します。しかし、私はこれを把握することができず、バインドモードでチェックボックスを維持しています。

この件に関するお手伝いがあります。

答えて

0

すべてのラジオボタンの名前が同じであることを確認するだけです。これによりラジオボタングループのようになり、ラジオボタングループは1つだけ選択できます。ラジオボタンの選択のために働く結合モデルのために今

@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;} 
} 
であなたのビューモデルのプロパティを持っていることを確認してください
関連する問題