【问题标题】:How to get value of a Radiobuttonfor(created using loop)如何获取 Radiobuttonfor 的值(使用循环创建)
【发布时间】:2016-01-27 12:25:24
【问题描述】:

查看

增量不起作用

int i = 0; 
foreach (var x in Model)
{
<div>

      @if(x.MCchoices.Any())
      {
          foreach (var item in x.MCchoices)
          {
             @item.question_desc
            foreach(var choices in item.MCchoices)
            {
                   @Html.RadioButtonFor(model => choices.qc_selectedchoice, choices.qc_id)
                   @Html.DisplayFor(model => choices.qc_choice)
            }
          }
      }
@{i++;}
</div>

每当我调试时,我都无法将单选按钮的值传递给我的控制器

型号

public class QuizMaker
{
   public string question_desc { get; set; }
    public string question_id { get; set; }
    public string qc_choice { get; set; }
    public string qc_id { get; set; }
    public string qc_selectedchoice { get; set; }

   public IEnumerable<QuizMaker> MCchoices { get; set; } }

我无法在帖子中获得价值:(非常感谢帮助:))))

【问题讨论】:

  • 视图中的模型是什么 (@model ????),你的意思是 foreach (var item in x.MTchoices)?您的 RadioButtonFor() 方法正在生成与您的模型无关的 name 属性。
  • @StephenMuecke 这是 MCchoices 我只是打错了。对不起
  • 我假设您不会发布相关代码或指示视图中的 mdoel 是什么。您的模型不正确,您对 foreach 循环的使用也不正确。建议你看看this answer

标签: asp.net asp.net-mvc asp.net-mvc-4 razor


【解决方案1】:

不要像 Stephen Muekle 所说的那样使用 foreach,它会破坏模型绑定。

您应该为每个模型定义EditorTemplate。或者使用for循环:

for (int i = 0; i < Model.Count(); i++)
{
<div>

      @if(Model[i].MCchoices.Any())
      {
          for (int j = 0; j < Model[i].MCchoices.Count(); j++)
          {
            @Model[i].MCchoices[j].question_desc
            for (int t = 0; t < Model[i].MCchoices[j].Count(); t++)
            {
                   @Html.RadioButtonFor(model => Model[i].MCchoices[j].MCchoices[k].qc_selectedchoice, Model[i].MCchoices[j].MCchoices[k].qc_id)
                   @Html.DisplayFor(model => Model[i].MCchoices[j].MCchoices[k].qc_choice)
            }
          }
      }
</div>

我可能对索引有误,因为我不明白您为什么将 2 个嵌套的 foreach 用于 MCchoices 集合。但我希望你能明白。

【讨论】:

  • 它说不能用 [] 应用索引
  • @BeginnerProgrammer 呃,把你的模型从IEnumerable&lt;QuizMaker&gt; 改成IList&lt;QuizMaker&gt;
  • 无法将 [] 索引应用于“System.Collections.Generic.IEnumerable”类型的表达式,我已将其更改为 IList
  • @BeginnerProgrammer 在你的控制器中填充你的集合到视图模型最后添加ToList()
  • @BeginnerProgrammer 也在你的 View 定义开头应该是@model IList&lt;acgs_qm.Models.QuizMaker&gt;
猜你喜欢
  • 2020-08-02
  • 1970-01-01
  • 1970-01-01
  • 2015-07-01
  • 2020-11-22
  • 1970-01-01
  • 2020-10-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多