【问题标题】:How do I mark certain checkboxes as checked in a dynamic list group? .NETCore / Bootstrap / Razor Pages如何在动态列表组中将某些复选框标记为已选中? .NETCore / Bootstrap / Razor 页面
【发布时间】:2022-01-18 04:45:04
【问题描述】:

我正在构建一个将联系人添加到通讯组列表的工具,并且一个联系人可以在多个通讯组列表中。我正在使用带有复选框的列表组,供用户显示和选择分发列表。在编辑联系人页面上,我需要选中联系人已经是其成员的分发列表的列表组中的复选框。我根本无法弄清楚如何做到这一点。我正在使用带有页面模型(无控制器)和剃须刀页面的 asp.net 核心

这在我的 cshtml 页面上:

<label for="DistributionListSelectIDLG" id="SeletDistributionListLabel" class="control-label">Select a Distribution List</label>
<div class="overflow-auto" style="max-height:500px">
    <ul class="list-group" id="DistributionListSelectIDLG" role="group" aria-labelledby="SeletDistributionListLabel">
        @foreach (var item in Model.CreateContactViewModel.DistributionLists)
        {
            <li class="list-group-item"><input type="checkbox" name="DistributionListSelectID" id="@item.DistributionListId" value="@item.DistributionListId" aria-label="@item.ListName" /> @item.ListName</li>
        }
    </ul>
</div>

这是在我的页面背后的代码

Contact = await _context.Contacts.FirstOrDefaultAsync(m => m.ContactId == id);

if (Contact == null)
{
    return NotFound();
}

CreateContactViewModel = new ContactViewModel()
            {
                DistributionLists = _distService.GetAllLists().Where(d => d.IsDeleted == false).OrderBy(d => d.ListName).ToList(),
                ListsAndContacts = _linkService.GetListsForContact((int)id).ToList()
            };

foreach (var dlitem in CreateContactViewModel.ListsAndContacts)
{
    // Do something here to populate the checkboxes
}

return Page();

有两个接口,一个获取DL的完整列表,一个获取联系人所属的DL列表。

谢谢

【问题讨论】:

    标签: c# asp.net-core razor-pages


    【解决方案1】:

    在编辑联系人页面上,我需要选中列表中的复选框 联系人已经是成员的通讯组列表 的。

    您的意思是检查一个分发列表和列表组中的名称吗?

    尝试对复选框进行if判断。如果姓名(联系人)已经是分发列表的成员,则输入复选框将被选中="checked"。

    Demo:ContactViewModels有8个项目:AA,BB,CC,DD,EE,FF,GG,HH;联系人有 5 项:AA,BB,CC.DD,EE。

    代码:

    <label for="DistributionListSelectIDLG" id="SeletDistributionListLabel" class="control-label">Select a Distribution List</label>
    <div class="overflow-auto" style="max-height:500px">
        <ul class="list-group" id="DistributionListSelectIDLG" role="group" aria-labelledby="SeletDistributionListLabel">
            @foreach (var item in Model.ContactViewModels)
            {
                <li class="list-group-item">
                   @*@if (Model.Contacts.Where(c => c.Name == item.Name).Count() != 0)*@//First method
                    @if (Model.Contacts.Any(c => c.Name == item.Name))      //Second method
                    {
                      <input type="checkbox" checked="checked" name="DistributionListSelectID" id="@item.Id" value="@item.Id" aria-label="@item.Name" />
                    }
                    else
                    {
                        <input type="checkbox" />
                    }
    
                    @item.Name
    
                </li>
            }
            </ul>
    </div>
    

    结果:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-29
      相关资源
      最近更新 更多