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

时间:2013-07-15 12:58:48

标签: c# asp.net asp.net-mvc

我正在开发一组用户分配模块 为此我有两个模型:

  1. Group。商店组信息。
  2. UserGroup。存储有关组与用户(UserIDGroupID)之间关联的信息。
  3. 我没有用户表,因为他们是AD用户。
  4. 首先,我写了以下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用户的列表。但我需要在CheckBox旁边添加SamAccoutnName
    2. 如果SamAccountName已分配给Group,则CheckBox应为checked = true,否则应为checked = false
    3. 添加AssignUsersGroup Post操作方法,该方法将接受CheckBox es列表并相应地更新UserGroup表。

2 个答案:

答案 0 :(得分:2)

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绑定名称和复选框,则在回发时将返回复选框的值。

答案 1 :(得分:0)

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

  
      
  1. 目前我正在显示所有AD用户的列表。但是我需要在SamAccoutnName旁边添加一个CheckBox。
  2.   
  3. 如果已将SamAccountName分配给该组,则应检查CheckBox = true,否则应检查=   假的。
  4.   

您只需要将复选框的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>

此外,我的示例假定您的“广告”对象具有一个属性,该属性指示此人是否在此组中。您需要使用当前使用的任何方法来检查它。