【发布时间】:2012-03-22 22:35:34
【问题描述】:
我有这些视图模型。
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
不知道为什么它说它们都是假的,因为我检查了它们。
【问题讨论】:
-
你可以使用
foreach并停止 a[x].b[z].c[y] 无意义的。 -
我可以,但通常这会导致所有内容都具有相同的 id(当您使用强类型助手时)。如您所见,我尝试了很多方法。
-
您可以查看和/或发布 jQuery 发送的数据吗?
标签: c# .net asp.net-mvc asp.net-mvc-3