1

我有 asp.net mvc 3 应用程序。我已经构建了由具有相同名称和不同值的不同复选框组成的编辑视图。我想通过将复选框的值与 c# 字符串数组中的值匹配来检查复选框。

行动:

public ActionResult Edit(int id)
{
    string[] AllRole = roleassign.Role.Split(',');
    ViewBag.allrole = AllRole;
    ViewBag.role = ivr.get_all_role();
    return View();
}

AllRole 是由“administrator”、“member”、“supervisor”组成的数组字符串

看法

          @foreach (var list in ViewBag.role)
            {
            <input type="checkbox" name="role" value=@list.Name /> @list.Name
            }

如何遍历 jquery 中的 ViewBag.allrole 数组字符串并选中具有 ViewBag.allrole 数组字符串中的值的复选框。 在视图中编辑 它会创建所有可用角色的整套复选框,如下所示:

<input type="checkbox" value="Administrator" name="role">
Administrator
<input type="checkbox" value="Moderator" name="role">
Moderator
<input type="checkbox" value="voice" name="role">
voiceanchor
<input type="checkbox" value="member" name="role">
member 

如果 ViewBag.allrole 由数组组成,"administrator","moderator"那么我想使用 jquery 在复选框中选中带有这些值的复选框

4

1 回答 1

1

如果您使用的是 .NET Membership,您可以执行以下操作:

@foreach (var role in Roles.GetAllRoles)
{
    bool checked = Roles.IsUserInRole(role);

    <input 
         type="checkbox"  
         name="role" 
         value="@role.Name" 
         @(checked ? "checked='checked'" : "")/> @role.Name
}

在您的特定示例中,您几乎可以执行相同的操作

string[] userRoles = ViewBag.role;

@foreach (var list in ViewBag.allrole)
{
    bool checked = userRoles.Contains(role);

    <input 
         type="checkbox" 
         name="role" 
         value="@list.Name" 
         @(checked ? "checked='checked'" : "")/> @list.Name
}

如果我错过了什么,请相应地更改您的变量,因为它们不是很直观。

于 2012-12-11T11:03:49.933 回答