含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
相关产品推荐
相关产品推荐

