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

如何让表单中<select>标签助手接收可为空bool类型的null值?

解决bool?属性无法接收表单null值的问题

1. 先修正视图的绑定错误

你当前视图里的代码绑定的是ComponentTimeUnits属性,用的还是枚举下拉列表,和目标属性FilterChanged完全不匹配,先改成正确的配置:

<select asp-for="FilterChanged" asp-items="SelectListHelpers.NullableBoolValues" class="form-control"></select>

2. 调整下拉选项的Value值(核心修复)

HTML表单没法直接传递null值,你原来设置Value = null的选项,浏览器提交时实际会发送空字符串给服务器,而ASP.NET Core默认不会把空字符串转换为bool?类型的null。所以把第三个选项的Value改成空字符串:

public static class SelectListHelpers
{
    public static List<SelectListItem> NullableBoolValues = new List<SelectListItem>
    {
        new SelectListItem{Text = "Tak", Value = "true"},
        new SelectListItem{Text = "Nie", Value = "false"},
        new SelectListItem{Text = "Brak danych", Value = ""}, // 替换为空字符串
    };
}

3. 验证效果

修改后,用户选择"Brak danych"提交表单时,服务器收到的空字符串会被自动绑定为FilterChanged的null值,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:35:18