我有一个用户对象,它有三位数据,用户,他们的订阅级别以及他们可能或可能成为其成员的所有组的列表。我需要生成一个视图,让我以智能方式编辑这些数据,并希望它与我的强类型模型绑定。
我希望每个可能的组都有一个复选框,并允许我的应用的用户选中或取消选中框以更改成员资格。我遇到的问题是我的行动
[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 :(得分: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>
...