【问题标题】:ASP.MVC5 - Foreach with property arrayASP.MVC5 - 具有属性数组的 Foreach
【发布时间】:2015-11-04 18:37:13
【问题描述】:

好吧!我正在使用 ASP.MVC5。我要做的是循环一个包含对象的数组,每个对象都包含数组属性:

我有这门课:

public class MylistModels  
{
  public string Subtitle { get; set; }
  public string[] Question { get; set; }
}

逻辑是:
我有一个 HTML 形式的 POST 表单(如果需要,我可以添加更多字段):

<input type="text" placeholder="Subtitle here" name="lists[0].Subtitle" />
<input type="text" placeholder="Subtitle here" name="lists[0].Question" />
<input type="text" placeholder="Subtitle here" name="lists[0].Question" />
<input type="text" placeholder="Subtitle here" name="lists[1].Subtitle" />
<input type="text" placeholder="Subtitle here" name="lists[1].Question" />
<input type="text" placeholder="Subtitle here" name="lists[1].Question" />
<input type="text" placeholder="Subtitle here" name="lists[2].Subtitle" />
<input type="text" placeholder="Subtitle here" name="lists[2].Question" />
<input type="text" placeholder="Subtitle here" name="lists[2].Question" />

当我点击保存时,我将它发送到一个动作:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(List<MylistModels> lists)
{
    if (ModelState.IsValid)
    {
        //how to loop the arrays that contains a subtitle with questions array?

        return RedirectToAction("Index");
    }                        
    return View();
}

当我在操作中收到它时,它看起来像这样:
我收到了一系列对象,每个对象都有与您的问题相关的副标题
Obs.:“副标题”在每个对象中总是一个,“问题”我可以有一个或多个。

问题:
如何在每个对象数组中循环并在该对象的每个问题中再次循环?

我正在尝试这样做,但它不起作用:

SubtitleChecklist subtitleCheckList = new SubtitleChecklist();            
QuestionChecklist questionChecklist = new QuestionChecklist(); 

foreach (var list in lists)
{
    subtitleCheckList.IdChecklist = idChecklist;
    subtitleCheckList.Subtitle = list.Subtitle;

    db.subtitleCheckList.Add(subtitleCheckList);
    db.SaveChanges();

    int idSubtitleChecklist = subtitleCheckList.Id;

    for (int i = 0; i < list.Question.Length; i++)
    {
        questionChecklist.Question = list.Question[i];
        questionChecklist.IdSubtitle = idSubtitleChecklist;

        db.QuestionChecklist.Add(questionChecklist);
        db.SaveChanges();
    }
}

【问题讨论】:

  • 你能解释为什么它不起作用吗?你调试了吗?结果如何?
  • 你在哪里设置 idChecklist?
  • 这是另一部分的代码,在我的代码中是可以的。

标签: c# asp.net arrays html


【解决方案1】:

你在哪里实例化 questionChecklist 和 subtitleCheckList?

看起来您在循环中一遍又一遍地修改相同的对象。

更新1:

移动:SubtitleChecklist subtitleCheckList = new SubtitleChecklist(); 在外循环内,QuestionChecklist questionChecklist = new QuestionChecklist(); 进入内循环。

另外,你现在得到了什么结果?

【讨论】:

  • 我做到了。我忘了把这个代码。我的问题是循环。你有什么想法吗?
【解决方案2】:

您循环遍历lists 对象,但您为其中一个对象以及您在循环之外定义的某个对象分配值并执行所有其他操作,并且与您的循环无关。

【讨论】:

  • 每个字幕都有很多问题。因此,当我插入字幕时,我必须保留用于与字幕相关的问题的 ID。
猜你喜欢
  • 1970-01-01
  • 2018-05-10
  • 2017-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多