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

Razor页面单选按钮无法选中问题求助

问题排查与修复方案

嘿,我一眼就发现问题所在啦!你这里犯了一个Razor开发里很常见的小失误——手动指定了name属性,这和asp-for标签助手的自动绑定逻辑冲突了。

问题原因

当你使用asp-for="@Model.ActionNeeded"时,Razor会自动为这个<input>生成对应的name和id属性,生成的name会和你的模型属性名(也就是ActionNeeded)完全一致。但你手动添加了name="radio-stacked",这就导致两个问题:

  • 浏览器虽然能识别这是同一组单选按钮,但模型绑定的逻辑被打乱了,选中的值无法正确传递给后端的模型;
  • 有时候还会干扰UI组件的状态反馈,让你看起来像是“无法选中”按钮。

修复后的代码

只需要删掉两个<input>标签里的name="radio-stacked"属性就行,asp-for会自动帮你处理单选按钮组的name关联:

<div class="custom-control custom-radio">
    <input type="radio" asp-for="@Model.ActionNeeded" value="Yes" class="custom-control-input" required>
    <label class="custom-control-label" asp-for="@Model.ActionNeeded">Yes</label>
</div>
<div class="custom-control custom-radio mb-3">
    <input type="radio" asp-for="@Model.ActionNeeded" value="No" class="custom-control-input" required>
    <label class="custom-control-label" asp-for="@Model.ActionNeeded">No</label>
</div>

额外优化建议

我还建议给<label>标签也加上asp-for属性,这样Razor会自动生成对应的for属性,关联到<input>的id。这样用户点击标签文字也能选中对应的单选按钮,既提升了可访问性,也优化了交互体验。

为什么这样能解决问题

删掉手动指定的name后,asp-for会确保两个单选按钮的name都是ActionNeeded,浏览器会正确识别它们为同一组,同时模型绑定也能顺利捕获选中的Yes/No值,UI的选中状态也会正常反馈啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:23:38