如何绑定CheckBoxFor

时间:2011-09-26 16:01:30

标签: c# asp.net-mvc

我有一组“权限”。每个权限都有三个属性:Id,Name和HasPermission。举个例子,考虑以下对象:

public class AccessPerm
{
  int PermId {get;set;}
  string PermName {get;set}
  bool HasPerm {get;set;}
}

public class UserProfile
{
  Collection<AccessPerm> UserPerms {get;set;}
}

所以我想使用CheckBoxFor助手创建复选框,以便可以设置用户的权限。如果选中该框,则HasPerm应为true。如果取消选中它,HasPerm应该是假的。我遇到的问题是我没有看到将PermId和HasPerm属性绑定到复选框的方法。我使用以下代码绑定HasPerm属性,但它没用,因为我不知道PermId。

<%
  for(int ix=0; ix< Model.UserProfile.Perms.Count; ix++)
  {
    Html.CheckBoxFor(model => model.UserProfile.Perms[ix].HasPerm);
  }
%>

这段代码确实绑定了HasPerm,值正确。但是,由于我没有id,我无法对值进行任何操作。请指教。

2 个答案:

答案 0 :(得分:4)

您可以将其包含为隐藏字段:

<% for(int ix = 0; ix < Model.UserProfile.Perms.Count; ix++) { %>
    <%= Html.HiddenFor(model => model.UserProfile.Perms[ix].PermId) %>
    <%= Html.CheckBoxFor(model => model.UserProfile.Perms[ix].HasPerm) %>
<% } %>

这样,您将在POST控制器操作中获得包含id的相同列表以及是否已选中。

答案 1 :(得分:0)

您可以尝试构建SelectList对象并将其绑定到复选框列表。