.NET Core HTML表单无法绑定到返回新视图的控制器及方法
排查Razor表单单选按钮问题的几个思路
嘿,我太懂那种盯着一个小问题卡好几天的憋屈感了!先帮你把代码格式化清晰,然后咱们捋几个常见的坑,说不定就能戳中你的问题~
你提供的代码(格式化后)
<div class="modal-body"> @using (Html.BeginForm("Index", "Study", FormMethod.Post)) { <div class="row"> <div class="col-sm-12"> <label>question</label> <div class="radio"> <label><input type="radio" name="Mhd" value="1"> <!-- 这里你没写完后续代码,比如单选按钮的文本、闭合标签等 -->
几个大概率的问题方向
- 单选按钮组的一致性问题:同组的单选按钮必须共享完全相同的
name属性(这里是Mhd),如果后面的单选按钮name写错了,就会出现无法互选、提交后值不对的情况,一定要检查所有同组单选的name。 - 强类型绑定替代手动HTML:与其手动写
<input type="radio">,不如用Razor的Html.RadioButtonFor辅助方法,能避免拼写错误,还能自动绑定模型值:@model YourNamespace.YourStudyModel <!-- 假设模型里有 public int Mhd { get; set; } --> <div class="radio"> <label>@Html.RadioButtonFor(m => m.Mhd, 1) 选项1</label> </div> <div class="radio"> <label>@Html.RadioButtonFor(m => m.Mhd, 2) 选项2</label> </div> - 表单提交的模型匹配:后台的
StudyController里的IndexAction,要确保接收的参数和表单控件的name一致。比如如果是强类型模型,模型类里必须有Mhd属性;如果是单独参数,要写public ActionResult Index(int Mhd)。 - 语法完整性问题:你提供的代码没写完,比如
<input>标签没闭合、缺少</label>、</div>和</form>的闭合标签,这些小语法错误可能导致页面渲染异常,进而影响表单功能,一定要检查整个表单的HTML结构是否完整。 - 调试小技巧:打开浏览器开发者工具(F12),查看渲染后的HTML,检查单选按钮的
name、value是否正确,表单的action属性是不是指向了/Study/Index,提交表单时可以看网络请求里的Form Data,确认Mhd值是否正确发送。
内容的提问来源于stack exchange,提问作者UncountedBrute
相关产品推荐
相关产品推荐

