【问题标题】:Select RadioButton based on database value根据数据库值选择 RadioButton
【发布时间】:2017-04-19 15:48:03
【问题描述】:

正在开发 MVC 5 应用程序。

我有一张有一堆列的表。一列包含项目的单选按钮列表。由于这是一个“编辑”视图,我需要正确地预先填充选定的单选按钮。 (即选择数据库中的项目)

我的控制器代码的一部分...

 newVmRecord.SurveyAnswerOption = 
       new SelectList(db.SurveyAnswerOptions, 
           "AnswerOptionText", "AnswerOptionText", ar.SurveyAnswer);

这是剃须刀:

  @foreach (SelectListItem item in 
    (IEnumerable<SelectListItem>)Model[i].SurveyAnswerOption)
  {
      @Html.RadioButtonFor(modelItem => Model[i].SelectedSurveyAnswer, 
        Model[i].SurveyAnswerOption, new { @Checked = 
        Model[i].SelectedSurveyAnswer}) @item.Text
  }  

可用选项为“是”、“否”和“不适用”。例如,在数据库中,如果已选择“否”,则应在加载此视图时预先选择它。单选按钮显示正确,但 @Checked 无法正常工作。

顺便说一句,我确定有现有数据,因为我把这行代码作为第一行 foreach....

  @Html.DisplayTextFor(modelItem => Model[i].SelectedSurveyAnswer);

有什么建议吗?谢谢!

【问题讨论】:

  • 您是否确认正在填充 ar.Survey 并且没有选角问题(即真/假、是/否、1/0)?
  • @KevinRaffay 是的。有数据。我尝试在 foreach 的第一行添加它并显示数据:@Html.DisplayTextFor(modelItem => Model[i].SelectedSurveyAnswer);
  • 好吧,如果 @checked 被翻译成 html 上的 checked 属性......它应该只接受单词 checked 或 ' '......那么 @Html.RadioButtonFor(modelItem =&gt; Model[i].SelectedSurveyAnswer, Model[i].SurveyAnswerOption, new { @Checked = Model[i].SelectedSurveyAnswer == "yes" ? "checked" : ""} 呢
  • 我同意大卫的观点——我记得“checked”是属性。
  • 实际上,你甚至不想要checked="",因为仅仅拥有checked属性会使一些浏览器检查单选按钮,所以使用上面大卫的例子,最后一个单选按钮会变成检查,不管哪个有checked="checked"。单选按钮的这种混乱是我通常选择下拉菜单的原因。快速fiddle 进行说明。

标签: c# asp.net-mvc razor


【解决方案1】:

请试试这个:

@foreach (SelectListItem item in (IEnumerable<SelectListItem>)Model[i].SurveyAnswerOption)
  {
      @Html.RadioButtonFor(modelItem => Model[i].SelectedSurveyAnswer,@item.Value, Model[i].SelectedSurveyAnswer == item.Value ? new {Checked = "checked"} : null) @item.Text
  } 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    相关资源
    最近更新 更多