来自数据库的CheckBoxList ASP.Net MVC 3

时间:2011-09-26 08:04:44

标签: asp.net-mvc checkbox checkboxlist asp.net-roles

假设我有这样的角色表:

tb_role
RoleId  Role_Name
     1  SalesCreate
     2  SalesEdit
     3  AgentCreate
     4  AgentEdit

我想列出Sales的角色复选框(SalesCreate和SalesEdit,因此它只有2个checbox)。我使用aspnet配置创建了tb_role,因此它不使用实体。

这是我的控制器:

RegisterModel account = new RegisterModel();
account.Roles = new MultiSelectList(Roles.GetAllRoles()); 

和我的观点:

 <td><select id="Roles" name="Roles">
                    <option>Sales</option>
                    <option>Agent</option>
     </select>
 </td>

@foreach (var item in Model.Roles)
             {
                 <label for="@item.Value">
                   <input type="checkbox" id="@item.Value" name="RolesSelected" value="@item.Value" @(item.Selected ? "checked" : "") />@item.Text</label>
             }

当我运行我的项目时,我的复选框列出了tb_role中的所有角色。我希望如果我选择销售,我的复选框列出所有销售角色(SalesCreate和SalesEdit)。怎么做?

非常感谢

1 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点。一种方法是:

使用<select>标记围绕<form>并在更改时提交。

在您的控制器中:

public ActionResult Index(..., string role)
{
    //... rest of your code
    RegisterModel account = new RegisterModel();
    account.Roles = new MultiSelectList(Roles.GetAllRoles().Where(w => w.StartsWith(role)); 
    //... rest of your code
}