mardi 19 décembre 2017

CheckBox List item not posting in mvc 5

I'm making an attendance panel for the students that are enrolled in the particular batch. For that I'm displaying the records of the students along with the number of checkboxes according to the number of classes assigned for that batch. Everything is displayed correctly, However checkboxes of only one row carry values to the post, and rest of the checkboxes in other rows are not posted. The student details for each row is posting correcting in a list.

Below is my code

StudentAttendance.cs

public class StudentAttendance
    {
        public List<Models.User> userlist { get; set; }
        public List<Models.Days> days { get; set; }
    }

InstructorController.cs

public ActionResult AssignedStudents(string id)
        {
            Models.StudentAttendance viewmodel = new Models.StudentAttendance();
            //viewmodel.studentbatch = new Models.StudentBatch();
            //viewmodel.user = new Models.User();

            Context.Instructor instructor = new Context.Instructor();

            viewmodel.userlist = new List<Models.User>();
            viewmodel.days = new List<Models.Days>();
            viewmodel.userlist = instructor.lstAssignedStudents(id);

            Context.Batches contBatch = new Context.Batches();
            var days = contBatch.SelectDays(id);
            int totaldays = contBatch.CalculateDays(days);

            var duration = contBatch.GetallBatchList().Where(p => p.Id == id);
            var batchduration = (from c in duration where c.Id == id select c.Duration).ToList();
            string d = batchduration[0].ToString();

            int totalduration = contBatch.GetBatchDuration(d);

            int TotalCheckBoxes = totalduration * totaldays;

            List<string> getdays = contBatch.getdaysinList(days, totalduration);
            List<Models.Days> day = new List<Models.Days>();

            for (int i = 0; i < TotalCheckBoxes; i++)
            {
                day.Add(new Models.Days { dayid = i, dayname = getdays[i], ischecked = false });

            }

            viewmodel.days = day;

            return View(viewmodel);
        }

 [HttpPost]
        public ActionResult MarkAttendance(Models.StudentAttendance viewmodel)
        {
            Models.StudentAttendance viewmodel1 = new Models.StudentAttendance();
            //viewmodel.studentbatch = new Models.StudentBatch();
            //viewmodel.user = new Models.User();
            return View();
        }

AssignedStudents.cshtml

@model WebApplication1.Models.StudentAttendance

@{
    ViewBag.Title = "AssignedStudents";
}

<h2>AssignedStudents</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>

@using (Html.BeginForm("MarkAttendance","Instructor", FormMethod.Post))
{
<table class="table">
    <tr>

        <th>
            @Html.DisplayName("First Name")
        </th>
        <th>
            @Html.DisplayName("Last Name")
        </th>



    </tr>

@*@foreach (var item in Model.user.userlst)
{*@
@for (int j = 0; j < Model.userlist.Count; j++)
{

    <tr>
        <td>
            @Html.HiddenFor(m=>Model.userlist[j].Id)

            @*@Html.DisplayFor(model => item.Id, new { htmlAttributes = new { @class = "form-control" } })*@

        </td>

        <td>
            @Html.EditorFor(m => Model.userlist[j].FirstName)
            @*@Html.EditorFor(model => item.FirstName, new { htmlAttributes = new { @class = "form-control" } })*@
        </td>
        <td>
            @Html.EditorFor(m => Model.userlist[j].LastName)
            @*@item.LastName*@
        </td>

        @for (int i = 0; i < Model.days.Count; i++)
        {
        <td>
            @Html.CheckBoxFor(m => Model.days[i].ischecked)
            @Model.days[i].dayname
            @Html.HiddenFor(m => Model.days[i].dayid)
            @Html.HiddenFor(m => m.days[i].dayname)
        </td>
        }

    </tr>

 }

</table>

<div class="form-group">
    <div class="col-md-offset-2 col-md-10">
        <input type="submit" id="Attendance" value="Create" class="btn btn-default" />
    </div>
</div>


}




Aucun commentaire:

Enregistrer un commentaire