具有强类型模型的多个复选框输入

时间:2012-11-13 20:02:39

标签: c# asp.net .net asp.net-mvc

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

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

[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
}

1 个答案:

答案 0 :(得分: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>
...