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

Blazor中InputSelect组件首选项提交时始终为null的问题

Blazor InputSelect 默认选中但提交值为null的解决办法

问题原因

问题核心是双向绑定的初始值不匹配:你的Distance是int?类型,初始化时默认值为null,但<option>的第一个选项值为5。浏览器会自动选中第一个<option>,但Blazor的绑定系统并没有将这个DOM层面的选中状态同步到Distance属性中,导致直接提交时Distance仍为null;而手动切换选项再切回时,触发了绑定更新逻辑,值才会正常同步。

解决方案

方案1:初始化绑定属性的默认值

在模型构造函数中,给Distance设置与第一个选项匹配的默认值,让绑定从一开始就保持同步:

public YourModel()
{
    DistanceList = new Dictionary<int, string>()
    {
        { 5, "5 Miles" },
        { 10, "10 Miles" },
        { 25, "25 Miles" }
    };
    // 设置默认选中值,与第一个选项匹配
    Distance = 5;
}

方案2:添加空占位选项(适用于需要用户主动选择的场景)

如果不希望默认选中任何选项,而是强制用户主动选择,可以添加一个空值选项:

<InputSelect @bind-Value="model.Distance">
    <option value="">请选择距离范围</option>
    @foreach (var distance in model.DistanceList)
    {
        <option value=@distance.Key>@distance.Value</option>
    }
</InputSelect>

这种情况下,用户未选择时Distance会保持null,提交前可以通过表单验证提示用户选择。

额外说明

你的<option>值与绑定属性的类型(int?)是兼容的,Blazor会自动处理字符串到可空整数的转换,无需额外修改这部分代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 22:58:13