我有一個新手問題,我試圖瞭解過去幾天。希望有人能夠幫助我理解編程流程。查看模型和視圖中的複選框
假設我有一個模型,將信息存儲在數據庫中:
public class Student
{
public int studentID { get; set; }
public string studentName { get; set; }
public strin studentGrade {get; set; }
}
public class StudentDBContext : DbContext
{
public DbSet<Student> Students { get; set; }
}
,我想它顯示到視圖,額外的複選框,這樣我就可以選擇哪個學生被提升到下一個年級。我讀了一個辦法做到這一點是通過投入視圖模型:
public class StudentViewModel
{
public bool promoted { get; set; }
public Student stu { get; set; }
}
但我堅持這個是做它的方式嗎?如果是的話,你如何看待它將顯示旁邊有一個複選框的所有學生。之後,我想更新複選框勾選的學生的所有成績。例如:
學生A,學生B,學生D從一年級升入二年級。所以我想展示學生,勾選學生A,B和D並提交以更新成績。
一步一步的例子將不勝感激。
更新1:
控制器:
[HttpGet]
public ViewResult CheckBox()
{
var studentViewModels = db.Students.Select(m => new StudentViewModel()
{
stu = m
}).ToList();
return View(studentViewModels);
}
[HttpPost]
public ActionResult CheckBox(IList<studentViewModel> list)
{
foreach (var stuUpdate in list.Where(m => m.promoted))
{
var stuRow = db.Students.Find(stuUpdate.stu.studentID);
stuRow.studentName = stuRow.studentName + "1";
db.Entry(stuRow).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("CheckBox");
}
return RedirectToAction("CheckBox");
}
查看:
@model IList<School.ViewModels.StudentViewModel>
@using (Html.BeginForm())
{
<table>
<tr>
<th>
</th>
<th>
student ID
</th>
<th>
student name
</th>
<th>
student grade
</th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.CheckBoxFor(modelItem => item.promoted)
@Html.HiddenFor(modelItem => item.stu.studentID)
</td>
<td>
@Html.DisplayFor(modelItem => item.stu.studentID)
</td>
<td>
@Html.DisplayFor(modelItem => item.stu.studentName)
</td>
<td>
@Html.DisplayFor(modelItem => item.stu.studentGrade)
</td>
</tr>
}
</table>
<input type="submit" value="save" />
}
但是目前由以下錯誤命中: 值不能爲空。 參數名:源
Source Error:
foreach (var stuUpdate in list.Where(m => m.promoted))
幫助....任何人? – blurryMVC