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

使用Razor Select Tag Helper强制单选、消除自动生成的multiple属性

解决方案

方案1(首选):将模型属性改回普通字符串类型

这是最适配你场景的解决方式,核心逻辑:被设置了disabled属性的表单元素,浏览器提交表单时默认不会将其值纳入提交内容。你同一时间仅会有一个select处于启用状态,完全不需要用数组接收值,直接使用普通字符串属性即可,框架会自动将唯一启用的select的选中值绑定到该属性。
操作步骤:

  1. 修改模型属性定义:
[BindProperty(SupportsGet = false)]
public string TätigkeitId { get; set; }
  1. 将两个select标签的asp-for属性值修改为TätigkeitId。
    修改后Tag Helper不会再自动生成multiple属性,默认就是单选下拉框的渲染效果,同时不会影响表单提交后的取值逻辑。

方案2(次选,需保留数组属性时使用):手动覆盖multiple属性

如果有特殊场景必须保留数组类型的属性,可以直接在select标签上手动指定multiple="false",Razor Tag Helper的规则是用户手动声明的属性优先级高于自动生成的属性,手动指定后会覆盖框架自动添加的multiple="multiple"属性。
修改后的select标签示例:

<select asp-for=TätigkeitIds multiple="false" required onchange="this.form.submit()" disabled=@(Model.Erfassung.TätigkeitNavigation != null && Boolean.Equals(Model.Erfassung.TätigkeitNavigation.Abzurechnen, true))>
<!-- 下拉选项内容 -->
</select>

两个select都按上述方式添加multiple="false"即可生效。

额外优化建议

当前渲染后的两个select的id属性值重复,不符合HTML规范,可能导致前端脚本、样式出现异常,可以手动给两个select设置不同的id属性区分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:36:01