MVC视图无法获取RadioButton值问题求助
看起来你在ASP.NET MVC里处理单选按钮绑定和数据库保存时遇到了选中值无法传递的问题,我帮你梳理下代码里的几个关键错误,修正后应该就能解决:
1. View里的RadioButtonFor字段名拼写错误
你在"No"选项的RadioButtonFor里把answerValue[i]误写成了answerValuer[i](多了个末尾的r),这会导致模型绑定完全找不到对应的字段,自然返回null:
<!-- 错误写法 --> @Html.RadioButtonFor(model => model.answerValuer[i], false) No <!-- 正确写法 --> @Html.RadioButtonFor(model => model.answerValue[i], false) No
2. Controller方法未接收视图模型参数
你的SaveAnswers方法没有把视图对应的模型作为参数传入,控制器根本拿不到页面提交的answerValue列表。需要修改方法签名,加上模型参数(记得替换成你实际的模型类名):
// 错误写法 public ActionResult SaveAnswers(string actionType) // 正确写法 public ActionResult SaveAnswers(YourQuestionModel model, string actionType)
3. ActionType判断不匹配
视图里提交按钮的value是SaveAnswers,但控制器里判断的是actionType == "Save",这会导致保存逻辑的代码块根本不会执行:
<!-- 视图里的提交按钮 --> <input type="submit" name="actionType" value="SaveAnswers"/>
// 错误判断 if (actionType == "Save") // 正确判断 if (actionType == "SaveAnswers")
4. 缺少循环批量保存的逻辑
你直接写了userAnswers.value = model.answerValue[i];,但这里的i没有定义,而且answerValue是List<bool>类型,需要遍历每个答案来批量保存:
if (actionType == "SaveAnswers") { foreach (var answer in model.answerValue) { Answers userAnswers = new Answers(); userAnswers.value = answer; db.Answers.Add(userAnswers); // 别忘了把实体添加到DbSet中 } db.SaveChanges(); }
5. 确保视图模型初始化正确
在返回视图的Action里,要提前初始化answerValue列表(比如根据问题数量创建对应长度的集合),否则视图里的索引i会报错,也会影响模型绑定:
public ActionResult YourViewAction() { var model = new YourQuestionModel(); // 假设你有5个问题,初始化包含5个元素的列表 model.answerValue = new List<bool>(new bool[5]); return View(model); }
按照上面的步骤逐一修正后,应该就能正常获取并保存单选按钮的选中值了。
内容的提问来源于stack exchange,提问作者Warda
相关产品推荐
相关产品推荐

