MVC CheckBoxList最后一个参数想要bool而不是集合

时间:2015-12-09 21:24:36

标签: asp.net-mvc-4

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

我试图使用MVC CheckBoxList助手,我绊倒了一些东西。 MVC CheckBoxList助手:
MvcCheckBoxList

示例代码使用:

@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

然而,当我开始提供最后一个参数(在上面的情况下为SelectedCities)时,它想要一个bool,而不是一个集合。

我的ViewModel:

public class UserDetailsModel
{
    public string CheckBoxListName { get; set; }
    public UserInfo UserDetails { get; set; }        
    public IList<PermissionCheckBoxInfo> AvailablePermissions { get; set; }
    public IList<PermissionCheckBoxInfo> SelectedPermissions { get; set; }
    public PostedPermissions PostedPermissions { get; set; }
}


public class PostedPermissions
{
    public string[] PermissionIDs { get; set; }
}

助手类:

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 => ???)

几个问题:
第一个参数是复选框的名称?在示例中它是一个数组?
为什么不在ViewModel中使用字符串?
另外,我需要将与这些条件相关联的当前用户ID发送回控制器操作,我该如何包含它?

0 个答案:

没有答案