如何绑定CheckBoxFor

本文关键字:CheckBoxFor 绑定 何绑定 | 更新日期: 2023-09-27 18:09:47

我有一个"permissions"的集合。每个权限有三个属性: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应该是正确的。如果取消勾选,则HasPerm应为false。我遇到的问题是,我没有看到将PermId和HasPerm属性绑定到复选框的方法。我使用下面的代码来绑定HasPerm属性,但是它没有用,因为我不知道PermId。

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

这段代码确实绑定了HasPerm,并且值是正确的。然而,由于我没有id,我不能对值做任何事情。请建议。

如何绑定CheckBoxFor

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

<% 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以及它是否被选中。

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