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

含0选项的Select列表未遵循默认值问题求助

解决ASP.NET Core下拉框默认选中被覆盖的问题

这是因为ASP.NET Core的asp-for标签助手会优先根据绑定的Model属性值设置选中项,完全覆盖你手动给空白选项加的selected属性。如果你的ModelProperty是int类型,它的默认值就是0,所以页面加载时会自动选中值为0的选项。

给你三个可行的解决办法:

  • 修改Model属性为可空整数类型
    把Model里的ModelProperty改成int?(可空int),这样它的初始值就是null,当asp-for找不到匹配的非空值时,就会保留你设置的默认空白选项:

    public int? ModelProperty { get; set; }
    
  • 给空白选项设置空值并匹配Model初始状态
    给空白选项加上value="",同时确保ModelProperty的初始值是空字符串(如果是string类型)或者null(如果是可空int):

    <option selected disabled value="">请选择</option>
    

    注意:如果ModelProperty是普通int类型,空字符串无法匹配int值,还是会选中0,所以建议搭配可空int使用。

  • 使用asp-items生成选项列表
    后端生成选项集合,前端用asp-items绑定,同时保留空白默认选项:
    后端代码(比如Controller里):

    ViewBag.NumberOptions = Enumerable.Range(0, 16)
        .Select(i => new SelectListItem { Value = i.ToString(), Text = i.ToString() });
    

    前端代码:

    <div>
        <label>Label Title:<span class="text-danger">*</span></label>
        <select class="form-select" asp-for="ModelProperty" asp-items="ViewBag.NumberOptions">
            <option selected disabled value="">请选择</option>
        </select>
    </div>
    

    同样需要确保ModelProperty是可空int类型,初始值为null。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 10:12:14