2012-11-13 64 views
0

我有一个用户对象,它具有三位数据,用户,他们的订阅级别以及他们是或可能成为的所有组的列表。我需要生成一个视图,让我以一种明智的方式编辑这些数据,并且我希望它与我的强类型模型绑定。具有强类型模型的多个复选框输入

我想每个可能的组都有一个复选框,并允许我的应用程序的用户选中或取消选中框以更改成员身份。我遇到的问题是我的行动

[HttpPost] 
public ActionResult Edit(UserModel usr) 
{ 

} 

永远不会从视图中的复选框中接收值,但其他属性正确填充。

我的第一个观点是这样的:

... 
@Html.EditorFor(m => m.UserName) 
@Html.EditorFor(m => m.Subscription) 
@Html.EditorFor(m => m.Membership) // just displays the string and bool values 
... 

我的第二个刺[也未能]

... 
@Html.EditorFor(m => m.UserName) 
@Html.EditorFor(m => m.Subscription) 

@foreach(var itm in Model.Membership) 
{ 
    @Html.EditorFor(_ => itm) 
} 
... 

我也试过了,没有手工工艺<input>标签不使用@Html.没有运气。

这是的usermodel的样子:

public class UserModel 
{ 
    public string UserName { get; set; } 
    public int Subscription { get; set; } 
    public Dictionary<String, bool> Membership { get; set; } // this is the problem 
} 

回答

0

有可能是解决这个更好的方法,但是我最终从Dictionary<String,Bool>切换到List<SelectListItem>

生成正确的后视图代码数据如下:

... 
<ul> 
@for (int i = 0; i < Model.Membership.Count; i++) 
{ 
    <li> 
     @Html.HiddenFor(_ => Model.Membership[i].Text) 
     @Html.HiddenFor(_ => Model.Membership[i].Value) 
     @Html.CheckBoxFor(_ => Model.Membership[i].Selected) @Model.Membership[i].Text 
    </li> 
} 
</ul> 
... 
相关问题