Asp.net mvc 4 MVC CheckBoxList最后一个参数想要bool而不是collection

Asp.net mvc 4 MVC CheckBoxList最后一个参数想要bool而不是collection,asp.net-mvc-4,Asp.net Mvc 4,我需要将表单连接到单个模型或viewmodel,其中包含一个复选框列表。这些复选框对应于用户在数据库中拥有的权限列表。获取这些并不是问题所在,而是将它们与用户信息捆绑到一个模型中,我可以在表单上使用该模型,并且在发回控制器方法时可以使用该模型 我正在尝试使用MVC CheckBoxList助手,但有几件事让我绊倒了。 MVC复选框列表帮助程序: 示例代码使用以下内容: @Html.CheckBoxListFor(x => x.PostedCities.CityIDs, // check

我需要将表单连接到单个模型或viewmodel,其中包含一个复选框列表。这些复选框对应于用户在数据库中拥有的权限列表。获取这些并不是问题所在,而是将它们与用户信息捆绑到一个模型中,我可以在表单上使用该模型,并且在发回控制器方法时可以使用该模型

我正在尝试使用MVC CheckBoxList助手,但有几件事让我绊倒了。 MVC复选框列表帮助程序:

示例代码使用以下内容:

@Html.CheckBoxListFor(x => x.PostedCities.CityIDs,  // checkbox list name, 'PostedCities.CityIDs' in this case
                      x => x.AvailableCities,       // List<City>()
                      x => x.Id,                    // City.Id
                      x => x.Name,                  // City.Name
                      x => x.SelectedCities)        // List<City>() - should contain only cities to be selected
在我看来:

    @Html.CheckBoxListFor(model=>model.PostedPermissions.PermissionIDs,
                          model=>model.AvailablePermissions,
                          x=>x.Id,
                          x=>x.Name,
                          a => ???)
几个问题:
第一个参数是复选框的名称?在这个例子中,它是一个数组
为什么不在ViewModel中使用字符串?

此外,我需要将与这些slections关联的当前用户id发送回控制器操作,如何将其包括在内?

显示您的
PermissionCheckBoxInfo
类-它是否具有属性
Id
Name
,以及一个
bool
属性来指示复选框是否被选中?您可以使用
@Html.CheckBoxListFor(x=>x.PostedPermissions.PermissionId,x=>x.AvailablePermissions,x=>x.Id,x=>x.Name,a=>x.IsSelected)
。不清楚您的
CheckBoxListName
属性的用途是什么,我不明白您在前两个问题中问了什么。如果您的controller POST方法接受
PostedPermissions
,那么您需要为该类添加用户的属性。但是为当前用户,并在您的控制器已经知道该信息时将其发回?第一个问题-为什么要将复选框名称设置为数组的名称?等一分钟,我想我已经解决了-复选框或单选按钮列表通常使用相同的名称。第二个问题-我需要的不仅仅是操作方法中选定复选框的列表,因为我需要知道要为哪个用户设置权限。如果我在UserDetails属性中设置了权限,那么将其包括在内的好方法是什么?另外,他们在文档页面的“BaseExample”中做了什么(请参见上面的链接)他们使用x=>x.SelectedCities作为最后一个参数的位置?但您知道用户。提交表单时,只需获取当前用户的ID。没有理由将其包含在视图中
public class PermissionCheckBoxInfo
{
    public string Name { get; set; }
    public int Id { get; set; }           // Integer value of a checkbox        
    public object Tags { get; set; }      // Object of html tags to be applied to checkbox, e.g.: 'new { tagName = "tagValue" }'
    public bool IsSelected { get; set; }  // Boolean value to select a checkbox on the list
}
    @Html.CheckBoxListFor(model=>model.PostedPermissions.PermissionIDs,
                          model=>model.AvailablePermissions,
                          x=>x.Id,
                          x=>x.Name,
                          a => ???)