【发布时间】:2013-04-02 13:05:33
【问题描述】:
我有一个表单来添加一个带有几个用户角色复选框的新用户。我的操作中有一个名为 User 的模型,它具有以下属性:
public string Username { get; set; }
public string Password { get; set; }
public IEnumerable<UserRole> Roles { get; set; }
在 UserRole 类中我有两个属性:
public int Id { get; set; }
public string Name { get; set; }
在我的表单中,我可以通过输入名称“用户名”和“密码”成功地绑定到用户名和密码。当页面最初加载时,用户角色详细信息已加载,因此我只需要传入 Id,因为这是服务将用户与用户角色相关联所需的内容。
我认为我可以通过为每个复选框提供角色 ID 的值并将其传递给 Roles 来完成此操作,从而部分完成角色类并将角色对象的 Name 字段留空。一个示例复选框如下所示:
<input type="checkbox" id="addUserAdministrator" name="Roles.Id" value="@Model.Roles.Where(role => role.Name == "Administrator").Select(role => role.Id).First()" class="css-checkbox"/>
但是,这永远不会填充 Roles 集合,并且它始终为 null。有没有办法做到这一点,或者我需要做冗长的方式来传递整数列表并在动作中创建模型?
编辑:
我的动作是这样的:
public RedirectToRouteResult Add(User user)
【问题讨论】:
-
您是否使用表单集合从复选框中检索值
-
我已经更新了我的问题,我正在尝试绑定到那个对象
-
该操作需要一个用户对象,但您似乎在传递一个角色,您可以发布整个表单代码吗?
-
正如我在帖子中所说,其他表单项称为用户名和密码,它们直接绑定到用户对象上的这些属性。 Roles.Id 是有意义的,因为 Id 是 UserRole 类的属性
标签: c# asp.net-mvc model-binding