[英]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.