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

1 回答 1

0

可能有更好的方法来解决这个问题,但我最终Dictionary<String,Bool>List<SelectListItem>

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

...
<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>
...
于 2012-11-13T20:02:39.400 回答