如何绑定CheckBoxFor

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

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

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

 <% for(int ix=0; ix model.UserProfile.Perms[ix].HasPerm); } %> 

这段代码确实绑定了HasPerm,值正确。 但是,由于我没有id,我无法对该值做任何事情。 请指教。

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

 <% 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对象并将其绑定到复选框列表。