2012-03-22 6 views
0

나는이보기 모형이있다.이 모델을 어떻게 바인딩합니까?

public class MasterFrmVm 
{ 
    public Guid Id { get; set; } 
    public IList<FrmVm> FrmVms { get; set; } 

    public MasterFrmVm() 
    { 
     RewardTierFrmVm = new List<RewardTierFrmVm>(); 
    } 
} 

public class FrmVm 
{ 
    public Guid Id { get; set; } 
    public IList<GroupedStoreVm> GroupedStoresVm { get; set; } 

    public FrmVm() 
    { 
     GroupedStoresVm = new List<GroupedStoreVm>(); 
    } 
} 

public class GroupedStoreVm 
{ 
    public string CountryName { get; set; } 
    public string CountryId { get; set; } 
    public IList<StoreGroupingVm> StoreGroupingVms { get; set; } 

    public GroupedStoreVm() 
    { 
      StoreGroupingVms = new List<StoreGroupingVm>(); 
    } 
} 

public class StoreGroupingVm 
{ 
     public string Name { get; set; } 
     public Guid Id { get; set; } 
     public IList<StoreVm> StoreVms { get; set; } 
} 

public class StoreVm 
{ 
     public Guid Id { get; set; } 
     public string Name { get; set; } 
} 


@foreach (var f in Model.FrmVm) 
{ 
     @Html.Partial("GenerateTier", f) 
} 


//GenerateTier 
    @model FrmVm 
    <ul class="storeTree"> 
    @for (int i = 0; i < Model.GroupedStoresVm.Count; i++) 
    { 
        <li> 
         <input type="checkbox" name="@Model.GroupedStoresVm[i]" value="@Model.GroupedStoresVm[i].CountryId" />@Model.GroupedStoresVm[i].CountryName 
         <ul> 
           @for (int x = 0; x < Model.GroupedStoresVm[i].StoreGroupingVms.Count; x++) 
          { 
           <li> 
            @Html.CheckBox(Model.GroupedStoresVm[i].StoreGroupingVms[x].Name , false, new { value = Model.GroupedStoresVm[i].StoreGroupingVms[x].Id }) @Model.GroupedStoresVm[i].StoreGroupingVms[x].Name         
            <ul> 
             @for (int z = 0; z < @Model.GroupedStoresVm[i].StoreGroupingVms[x].StoreVms.Count; z++) 
             { 
              <li>@Html.CheckBox(Model.GroupedStoresVm[i].StoreGroupingVms[x].StoreVms[z].Name, false)@Model.GroupedStoresVm[i].StoreGroupingVms[x].StoreVms[z].Name </li> 
             } 
            </ul> 
           </li>          
          }      
         </ul>     
        </li>   
       } 
       </ul> 

기본적으로 체크 박스 트리를 만듭니다 (jquery 플러그인을 사용하여 트리처럼 보이게 만듭니다). 그러나 나는 그들이 바인딩하는 확인란을 만드는 방법을 잘 모르겠습니다. 일반적으로 강력하게 형식화 된 HTML 도우미를 사용하지만 bool 값을 원할 때 어떻게 보일지 모르겠습니다.

그래서 강력하게 형식화 된 도우미와 html을 모두 시도했지만 바인딩 할 컨트롤러가있을 때 어떻게 만들지 알아낼 수 없습니다.

public ActionResult (FrmVm vm) 
{ 
} 

jquery를 사용하여 직렬화하고 Ajax를 통해 전송합니다. 나는 또한 FrmVm을 언급하는 것을 잊었다

편집 또한 많은 수 있습니다 그것도 같은 다른 뷰 모델이다.

@foreach (var f in Model.FrmVm) 
{ 
    @Html.Partial("GenerateTier", f) 
} 

무엇이 내가 위에 보여준 코드입니다. 이제 내 코드에 추가되었습니다.

편집이 여기

내가

FrmVm%5Bd06a6c21-1796-4fb5-9af5-cbf973c6c820%5D.a=a 
&FrmVm%5Bd06a6c21-1796-4fb5-9af5-cbf973c6c820%5D.a=false 

&FrmVm%5Bd06a6c21-1796-4fb5-9af5-cbf973c6c820%5D.3=70563225-2718-40ec-8a71-a01500a66183 
&FrmVm%5Bd06a6c21-1796-4fb5-9af5-cbf973c6c820%5D.3=false 

&FrmVm%5Bd06a6c21-1796-4fb5-9af5-cbf973c6c820%5D.1=dbd43e7e-86e4-4fa1-9e48-a01a00db151c 
&FrmVm%5Bd06a6c21-1796-4fb5-9af5-cbf973c6c820%5D.1=false 

구조가 될 것이다 (물론 그들은 것 체크 박스)

-a 
    - 3 
    -1 

이 아닌 그들이 있는지 말한다 왜 불을 지르고에서 볼 것입니다 내가 모두 확인했을 때 거짓이었다.

+0

아마도 'foreach'를 사용하는 [X] .B [Z] .c 인 [Y] nonesense을 중지 할 수있다. – asawyer

+0

나는 일반적으로 동일한 ID를 가진 모든 것을 만들 수 있습니다 (강력한 입력 헬퍼를 사용할 때). 보시다시피 저는 여러 가지 방법을 시도했습니다. – chobo2

+0

jQuery에서 보낸 데이터를 보거나 게시 할 수 있습니까? – kendaleiv

답변

0

viewmodel의 속성이 bool으로 정의 된 경우 도우미 @Html.EditorFor(model => model.boolProperty)은 자동으로 확인란을 생성합니다.

귀하의 댓글에 대한 응답으로, 아마도 이와 비슷한 것일 수 있습니까?

public class myViewModel 
{ 
List<boolNames> firstList { get; set; } 
List<boolNames> anotherList { get; set; } 
} 

public class boolNames 
{ 
public string Name { get; set; } 
public int GUID { get; set; } 
public bool checkBox { get; set; } 
} 

도면

@for(int i = 0 ; i < Model.firstList.Count ; i++) 
{ 
<div id="@(Model.firstList[i].GUID)"> 
<span>@Model.firstList[i].Name</span> 
<span>@Html.EditorFor(model => model.firstList[i].checkBox)</span> 
</div> 
} 
+0

그래도 내 물건이 모델 쪽에서 어떻게 보이는지 이해할 수 없습니다. 나는 각 레벨마다 하나씩 bool 목록을 3 개 가지고 있습니까? – chobo2

+0

@ chobo2 - Edit (편집)를 참조하십시오. 내 답변은 코멘트의 범위를 벗어났습니다. –

+0

이 클래스는 내가 이미 가지고있는 클래스와 어떻게 어울리나요? 나는 논리를 할 필요가 있기 때문에 그 구조를 유지할 필요가있다. 예를 들어 그들이 미국, 음식, 피자 헛을 선택한다면 기본적으로 FrmVm -> GroupedStoresVm (국가 물품 포함) -> StoreGroupingVm (그룹화 정보) -> StoreVm (상점 정보 있음)을 유지해야합니다. 그래서 모든 정보를 알아야합니다. 귀하의 2 별도의 상자와 나는 정보를 정렬하는 방법을 정말 모르겠다. – chobo2

관련 문제