繁体   English   中英

如何在 .NET Core MVC 2.2 中一次插入多个输入条目

[英]How do I insert multiple input entries at one time in .NET Core MVC 2.2

我在一次添加多个输入条目时遇到问题。 下面我列出了我认为您需要的所有信息。

查看: http : //prntscr.com/qto52o
查看代码:

                @foreach (var item in ViewBag.Studenten)
            {
                <input name="vakId" value="@vakId" style="display:none;"/>
                <input name="studentId" value="@item.Id" style="display:none;" />
                <label>@item.Voornaam @item.Tussenvoegsel @item.Achternaam</label>
                <input type="number" class="form-control" min="1" max="10" step="0.2" />
                <span id="Validation" class="text-danger"></span>
                <br />
            }

方法:

 [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> GroepsResultaten(int vakId, int[] studentId, [Bind("Id,Beoordeling,StudentId,VakId")] List<Resultaat> resultatenLijst, Resultaat resultaat)
    {
        Console.WriteLine("vakId is :" + vakId);
        if (ModelState.IsValid)
        {
            List<Student> Studenten = new List<Student>();
            foreach (var student in studentId)
            {
                resultaat.StudentId = student;
                resultaat.Beoordeling = 9;
                resultaat.VakId = vakId;
                Console.WriteLine("studentId is :" + student.ToString());
                _context.Add(resultaat);
            }
            await _context.SaveChangesAsync();
            return RedirectToAction(nameof(Index));
        }
        ViewData["StudentId"] = new SelectList(_context.Student, "Id", "Voornaam", resultaat.StudentId);
        ViewData["VakId"] = new SelectList(_context.Set<Vak>(), "Id", "Naam", resultaat.VakId);
        return View(resultaat);
    }

使用的型号:

  public class Resultaat
{
    public int Id { get; set; }
    public double Beoordeling { get; set; }

    public Student Student { get; set; }
    public int StudentId { get; set; }

    public Vak Vak { get; set; }
    public int VakId { get; set; }
}
public class Vak
{
    public int Id { get; set; }
    [Required]
    public string Naam { get; set; }
    [Required]
    public string Vakcode { get; set; }

    public List<Resultaat> Resultaten { get; set; }
    public List<GroepVak> Groepen { get; set; }
}
    public class Student
{
    public int Id { get; set; }
    [Required]
    public string Voornaam { get; set; }
    [Required]
    public string Achternaam { get; set; }
    public string Tussenvoegsel { get; set; }
    public string Studentnummer { get; set; }

    public List<Resultaat> Resultaten { get; set; }
    public List<StudentGroep> Groepen { get; set; }
}

在控制台中编写 studentId 和 subjectId 工作正常,我认为问题是将值添加到数据库中。

编辑:
它只从创建视图中插入最后一个学生的值

        [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> GroepsResultaten(int vakId, int[] studentId, double [] cijfers, [Bind("Id,Beoordeling,StudentId,VakId")] List<Resultaat> resultatenLijst, Resultaat resultaat)
    {
        Console.WriteLine("vakId is :" + vakId);
        if (ModelState.IsValid)
        {
            foreach (var student in studentId)
            {
                Resultaat res = new Resultaat
                {
                    StudentId = student,
                    Beoordeling = 3,
                    VakId = vakId
                };
                ////Console.WriteLine("current student is: " + student + " with grade: " + cijfer + " and subjectid: " + vakId);
                resultatenLijst.Add(res);
            }

            _context.Resultaat.AddRange(resultatenLijst);
            await _context.SaveChangesAsync();
            return RedirectToAction(nameof(Index));
        }
        ViewData["StudentId"] = new SelectList(_context.Student, "Id", "Voornaam", resultaat.StudentId);
        ViewData["VakId"] = new SelectList(_context.Set<Vak>(), "Id", "Naam", resultaat.VakId);
        return View(resultaat);
    }

它的工作原理是创建一个结果列表,并为每个学生 ID 添加一个新结果。

然后将列表添加到数据库中,您必须使用 .AddRange(lis)

_context.Resultaat.AddRange(resultatenLijst);

我只需要弄清楚如何给学生分配正确的成绩,现在它只接受静态数据

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM