Turn on boolean and enter the text in the field of view, then go to the controller - MVC

I have a view that displays a boolean value (currently defaults to 0) in a window format in a view that I cannot verify to activate it as true, and also want to enter text in the result field to return to the controller and save both changes to the table. Can someone explain what I have to do for this feature to work, please.

enter image description here

Controller code

public ActionResult P1A1Mark() { List<MarkModel> query = (from row in db.submits where row.assignment_no.Equals("1") && row.group_no == 1 group row by new { row.assignment_no, row.student_no, row.student.firstname, row.student.surname } into g select new MarkModel { student_no = g.Key.student_no, student_surname = g.Key.surname, student_firstname = g.Key.firstname } ).ToList(); return View(query); } 

View

 @model IEnumerable<MvcApplication2.Models.MarkModel> @{ ViewBag.Title = "P1A1Mark"; } <h2>Mark Student Assignments</h2> <table> <tr> <th> @Html.DisplayNameFor(model => model.student_no) </th> <th> @Html.DisplayNameFor(model => model.student_surname) </th> <th> @Html.DisplayNameFor(model => model.student_firstname) </th> <th> @Html.DisplayNameFor(model => model.submitted) </th> <th> @Html.DisplayNameFor(model => model.result) </th> <th></th> </tr> @foreach (var item in Model) { <tr> <td> @Html.DisplayFor(modelItem => item.student_no) </td> <td> @Html.DisplayFor(modelItem => item.student_surname) </td> <td> @Html.DisplayFor(modelItem => item.student_firstname) </td> <td> @Html.DisplayFor(modelItem => item.submitted) </td> <td> @Html.DisplayFor(modelItem => item.result) </td> </tr> } </table> 

Model

  public class MarkModel { public string student_no { get; set; } public string student_surname { get; set; } public string student_firstname { get; set; } public string assignment_no { get; set; } public bool submitted { get; set; } public string result { get; set; } public Nullable<int> group_no { get; set; } } 
+5
source share
1 answer

Create an EditorTemplate for the type MarkModel .

In /Views/Shared/EditorTemplates/MarkModel.cshtml

 @model MvcApplication2.Models.MarkModel <tr> <td>@Html.DisplayFor(m => m.student_no)</td> <td>@Html.DisplayFor(m => m.student_surname)</td> <td>@Html.DisplayFor(m => m.student_firstname)</td> <td>@Html.CheckBoxFor(m => m.submitted)</td> <td>@Html.TextBoxFor(m => m.result)</td> </tr> 

and in the main view

 @model IEnumerable<MvcApplication2.Models.MarkModel> @using (Html.BeginForm()) { <table> <thead> // add your th elements </thead> <tbody> @Html.EditorFor(m => m) <tbody> </table> <input type="submit" ../> } 

and create a method to return to

 [HttpPost] public ActionResult P1A1Mark(IEnumerable<MarkModel>model) 

Alternatively, you can use the for loop in the view (the model must be IList<T> )

 for(int i = 0; i < Model.Count; i++) { .... @Html.CheckBoxFor(m => m[i].submitted) } 
+1
source

All Articles