2012-03-22 9 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) 
} 

次に、上記で示したコードは何ですか。今すぐ自分のコードに追加しました。ここで

編集2

私は放火犯で見るもの

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

しかし、私のオブジェクトがモデル側でどのように見えるのか分かりません。私は各レベルのために3つのboolリストを持っていますか? – chobo2

+0

@ chobo2 - 編集を参照してください、私の回答はコメントの範囲外でした。 –

+0

このクラスは私がすでに持っているものとどのように適合しますか?私はロジックを行う必要があるので、その構造を維持する必要があります。例えば、彼らがアメリカ、フード、ピザハットを選んだ場合、基本的にはFrmVm→GroupedStoresVm(国産品)→StoreGroupingVm(グルーピング情報)→StoreVm(店舗情報を持つ)のようなものを作り続ける必要があります。だから私はすべての情報を知る必要があります。あなたの2つの別々のボックスでは、私は本当に情報を整列する方法を知りません。 – chobo2

関連する問題