1

asp.net mvc 3 アプリケーションがあります。同じ名前で異なる値を持つ異なるチェックボックスで構成されるEDITビューを作成しました。チェックボックスの値と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 メンバーシップを使用している場合は、次のようなことができます。

@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 に答える