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

使用@Html.RadioButtonFor生成单选按钮出现重复ID#GenderId错误求助

解决RadioButtonFor生成重复ID的问题

你遇到的问题核心是错误地嵌套了htmlAttributes参数,导致自定义ID没有生效,RadioButtonFor仍然使用默认的属性名作为ID,进而引发重复ID的DOM警告。

问题原因分析

你当前的代码里,把自定义属性放在了htmlAttributes这个嵌套的匿名对象中:

new { htmlAttributes = new { @class = "form-control", @id = "radio" + Guid.NewGuid().ToString() } }

这种写法会让Razor把htmlAttributes当成一个单独的HTML属性渲染出来(也就是你在控制台看到的htmlattributes="{ ... }"),而不是把class和id直接绑定到input元素上。同时,RadioButtonFor会默认根据绑定的模型属性GenderId生成ID,所以每个单选按钮都会带上id="GenderId",最终导致重复ID的问题。

修复方案

只需要去掉外层的htmlAttributes嵌套,直接把属性放在第三个参数的匿名对象里即可:

@foreach (var radioItem in (IEnumerable<MyMatrimony.Models.tblGenderMaster>)ViewBag.GenderId) 
{ 
    @Html.RadioButtonFor(model => model.GenderId, radioItem.Id, new { @class = "form-control", @id = "radio" + Guid.NewGuid().ToString() }) 
    @radioItem.Gender 
}

修复效果说明

修改后,Razor会正确把class和自定义的唯一ID渲染到input元素上,同时覆盖RadioButtonFor默认生成的ID。这样每个单选按钮都会有类似id="radio95083401-4ebf-4ee4-b402-3a9018770a60"的唯一ID,Chrome控制台的重复ID警告就会消失,同时单选按钮的功能保持正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:08:12