如何根据特定值更改复选框状态,以及如何将复选框列表发布回服务器

本文关键字:复选框 列表 服务器 布回 状态 何根 | 更新日期: 2023-09-27 18:22:18

我正在处理一个组用户分配模块
为此,我有两种型号:

  1. CCD_ 1。存储组信息
  2. CCD_ 2。存储组和用户之间的关联信息(UserIDGroupID
  3. 我没有用户表,因为他们是AD用户

首先,我写了以下Action Method:

public ViewResult Details(int id) {   
    ViewBag.ADUsers =   repository.GetADUsers();
    return View(repository.FindAllGroup(id));
}

repository.GetADUsers将在其中检索当前在Active Directory中的所有用户
视图如下:

@model TMS.Models.Group
<h2> Assign Users To the Group</h2>
@foreach (var ad in ViewBag.ADUsers) {
    <tr>
        <td>
            <div >@ad.SamAccountName </div>
        </td>
    </tr> 
}

但是我如何将其扩展到包括这些主要功能。

  1. 目前,我正在显示所有AD用户的列表。但我需要在SamAccoutnName旁边添加一个CheckBox
  2. 如果SamAccountName已经分配给Group0,则CheckBox应该是checked = true,否则应该是checked = false
  3. 要添加AssignUsersGroup Post操作方法,该方法将接受CheckBox es的列表并相应地更新UserGroup

如何根据特定值更改复选框状态,以及如何将复选框列表发布回服务器

List<TypeOfListReturn> ADUsersList = ViewBag.ADUsers as List<TypeOfListReturn>;
foreach (var ad in ADUsersList )
{
<table>
    <tr>
        <td>
            <div>
                @ad.SamAccountName
                @Html.CheckBox("chk_" + ad.SamAccountName, ad.isInGroup)
            </div>
        </td>
    </tr>
</table>
}  

这是你的1和2的答案。对于第三个,我更希望你使用模型。如果您使用model来绑定名称和复选框,那么在post-back中,将返回复选框的值。

我可以回答1和2,但不能回答3。

  1. 目前,我正在显示所有AD用户的列表。但我需要在SamAccutnName旁边添加一个复选框
  2. 如果SamAccountName已分配给组,则复选框应被选中=true,否则应被选中=false

您只需要将复选框的HTML添加到foreach中,然后使用if语句检查您的"已检查"条件:

@foreach (var ad in ViewBag.ADUsers) {
    <tr>
        <td>
            @if (ad.isInGroup) 
            {
                <input type="checkbox" name="@ad.SamAccountName" checked="checked">
            }
            else
            {
                <input type="checkbox" name="@ad.SamAccountName" checked="">
            }
            <div >@ad.SamAccountName </div>
        </td>
    </tr> 
}

如果您希望这些项目并排,则可能需要将<div>更改为跨度<span>

此外,我的示例假设您的"ad"对象具有一个属性,该属性指示该人是否在该组中。你需要使用你目前使用的任何方法来检查。