You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core Razor Pages动态复选框选中状态不显示问题

问题分析与修复方案

核心问题1:页面加载时未绑定数据库中的选中状态

你在OnGetAsync方法构建CustomersChecked列表时,仅赋值了Text和Value,未将数据库AccessRights表的isSelected字段值绑定到SelectListItem的Selected属性,导致页面加载时无法正确显示已选中的复选框。

修复后的OnGetAsync代码:

public async Task<IActionResult> OnGetAsync(int? id)
{
    if (id == null || _context.AccessRights == null)
    {
        return NotFound();
    }

    var accessrightsList = await _context.AccessRights.Where(m => m.EmployeeId == id).ToListAsync();
    AccessRights = accessrightsList.FirstOrDefault();

    CustomersChecked = accessrightsList.Select(p => new SelectListItem
                       {
                           Text = p.CustomerName,
                           Value = p.CustomerId.ToString(),
                           Selected = p.isSelected // 新增:绑定数据库中的选中状态
                       }).ToList();
    
    return Page();
}

核心问题2:HTML复选框checked属性写法错误

HTML中checked是布尔属性,只要属性存在,无论值是什么,浏览器都会判定为选中。你当前写法checked="@customers.Selected"会在未选中时输出checked="false",这依然会被浏览器视为选中状态,导致显示异常。

修复后的视图代码:

<div class="form-group">
    <label  class="control-label"> Access To Customers</label>
    <div class="checkbox checkboxlist">
    @{
        foreach (var customers in Model.CustomersChecked)
        {
            <input type="checkbox" id="@customers.Value" value="@customers.Value" name="CustomersChecked" @(customers.Selected ? "checked" : "") />
            <label class="text-black">@customers.Text</label><br/>
        }
    }
    </div>
    <span class="text-danger"></span>
</div>

额外优化:Post方法使用更可靠的更新条件

当前用CustomerName作为更新条件,若存在同名客户会导致错误更新,建议改用唯一标识CustomerId:

修复后的OnPostAsync中SQL语句部分:

await _context.Database.ExecuteSqlInterpolatedAsync($"UPDATE [AccessRights] SET [isSelected] = {item.Selected}, [LastModifiedBy] = {AccessRights.LastModifiedBy}, [LastModifiedTimeStamp] = {AccessRights.LastModifiedTimeStamp} WHERE [EmployeeId] = {AccessRights.EmployeeId} AND [CustomerId] = {item.Value}");

内容的提问来源于stack exchange,提问作者Teena

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 13:22:03