将值设置为复选框&在控制器中检索该值

时间:2013-05-24 07:15:22

标签: asp.net-mvc-3 entity-framework razor

我想在公司访问中显示所有用户名,但是我可以这样做,同时必须从表单中检索所选的userroleid,以便保存在数据库中。

在视图中:

我有多个带有userroles的复选框,每个用户角色都有一个id。在选中特定复选框时,必须重新获取该用户标识。有什么建议吗?

我在视野中的代码是这样的: -

@foreach (var r in @Model.RolesList)
{
  @Html.CheckBoxFor(Model1 => Model.UserRole) @r.RoleName
}

所以我想检索所选的复选框userroleid。怎么做?

2 个答案:

答案 0 :(得分:0)

我曾经处理过类似情况

你可以做什么,你可以使用for循环并使用隐藏的元素来获取表格中的ID POST动作

@for (int i = 0; i < Model.RolesList.Count; i++)
{
   @Html.CheckBoxFor(o => o.RolesList[i].UserRole.Checked)//checked is a bit that represents selected/unselected
   @Html.Label(Model.RolesList[i].UserRole.Name)
   @Html.HiddenFor(o => o.RolesList[i].UserRole.ID)
}

在表单帖子中,当您将表单与RolesList列表绑定时,您将获得一个UserRole,其ID为UserRole,并检查位以表示是否已选中或未经选择的

就我而言,UserRole不是bool,而是以下

public class UserRole
{
   public long Id{set;get;}
   public String Name {set; get;}
   Public bool Checked {set;get;}
}

但是,由于您无法将UserRolebool更改为我的建议,您可以尝试以下

@for (int i = 0; i < Model.RolesList.Count; i++)
{
   @Html.CheckBoxFor(o => o.RolesList[i])
   @Html.Label(Model.RolesList[i].Name) // what ever you want to display in the label
   @Html.HiddenFor(o => o.RolesList[i].ID) // Id to uniquely identify each Role in RoleList
}

答案 1 :(得分:0)

@foreach (var r in @Model.RolesList)
                 {
                    @Html.CheckBoxFor(Model1 => r.UserRole) @r.RoleName<br />
                 }