RadioButton值无法传递至Controller问题排查求助
问题解决方法
你的问题出在这几个关键地方:
- 手动覆盖name属性导致模型绑定失败:
asp-for="loremType"会自动生成与Model字段名一致的name属性(即name="loremType"),但你手动添加了name="type",导致表单提交的参数名是type,和Controller接收的Model字段loremType不匹配,所以无法完成绑定。直接删掉name="type"即可。 - label的关联属性不匹配:每个label的
for属性值(比如rdbLetters)没有对应的input id,导致点击label无法选中对应单选按钮。建议用asp-for自动关联,把label改成<label asp-for="loremType">Letters</label>,系统会自动匹配对应的radio元素。 - 硬编码checked属性不符合模型驱动逻辑:不要手动写
checked="checked",应该在Model初始化时把loremType的默认值设为3,这样页面加载时会自动选中对应选项,也能保证前后端数据一致。
修正后的代码示例
<div class="row"> <div class="col-md-4"> <input asp-for="loremType" value="1" type="radio" /> <label asp-for="loremType">Letters</label> </div> <div class="col-md-4"> <input asp-for="loremType" value="2" type="radio" /> <label asp-for="loremType">Words</label> </div> <div class="col-md-4"> <input asp-for="loremType" value="3" type="radio" /> <label asp-for="loremType">Paragraphs</label> </div> </div>
对应Model设置默认值
public class YourModel { public int loremType { get; set; } = 3; // 默认选中Paragraphs选项 }
修改后,表单提交时loremType的值就能正确传递到Controller了。
内容的提问来源于stack exchange,提问作者Prageeth Liyanage
相关产品推荐
相关产品推荐

