如何将下拉列表中的选定值与表中的行ID相关联?

时间:2019-05-28 20:14:42

标签: c# asp.net-mvc

我正在尝试构建一个应用程序,该应用程序将允许教师在Web应用程序中输入班级出勤率。我得到它来显示指定班级中的学生,以及一个下拉列表,该列表中填充了可能的出勤选择。当讲师单击“保存出席”按钮时,返回的值只是所有选定值的列表,例如Attend_detail = PRESENT&attend_detail = PRESENT&attend_detail = ABSENT&attend_detail = TARDY&attend_detail = ABSENT&attend_detail = PRESENT&attend_detail = PRESENT&EXEND_AB。它为每个学生选择了每个值,但是我无法知道谁拥有哪个状态。

这是显示学生的视图。

@model IEnumerable<RLCAttendanceWebAppNoOauth.Models.student_list>
@{
    ViewBag.Title = "ClassList";
}

<h2>ClassList</h2>
<p>@ViewBag.attend_date</p>
<p>@ViewBag.year</p>
<p>@ViewBag.term</p>
@using (Html.BeginForm("SaveAttendance", "Schedule", FormMethod.Post))
{
    <table class="table">
        <tr>
            <th>
                @Html.DisplayNameFor(model => model.ID)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.LAST_NAME)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.FIRST_NAME)
            </th>
            <th></th>
        </tr>
        @foreach (var item in Model)
        {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.ID)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.LAST_NAME)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.FIRST_NAME)
                </td>
                <td>                
                    <p>
                        @Html.DropDownList("attend_detail", null, "", new { id = item.ID }) 
                    </p>                
                </td>
            </tr>
        }
    </table>
<input type="submit" value="Save Attendance" />
}

这是Student_list的模型。

using System;
using System.Collections.Generic;

public partial class student_list
{
    public string LAST_NAME { get; set; }
    public string FIRST_NAME { get; set; }
    public Nullable<System.DateTime> CHANGE_DATE { get; set; }
    public string ACADEMIC_YEAR { get; set; }
    public string ACADEMIC_TERM { get; set; }
    public string ACADEMIC_SESSION { get; set; }
    public string EVENT_ID { get; set; }
    public string SECTION { get; set; }
    public string ID { get; set; }
}    

这是控制器中列出班级学生的代码。

public ActionResult ClassList(DateTime Attend_Date)
{
    Session["attend_date"] = Attend_Date.ToShortDateString();
    sp_rlc_lti_student_list_Result model = new sp_rlc_lti_student_list_Result();
    var attend_detail = db.attend_detail
        .OrderBy(q => q.CODE_VALUE_KEY)
        .ToDictionary(q => q.CODE_VALUE_KEY, q => q.LONG_DESC);
    ViewBag.attend_detail = new SelectList(attend_detail, "Key", "Value");

    var year = Session["year"].ToString();
    var term = Session["term"].ToString();
    var event_id = Session["course_id"].ToString();
    var section = Session["section"].ToString();
    var classListQry = from c in db.student_list
                       where c.ACADEMIC_YEAR == year
                           & c.ACADEMIC_TERM == term
                           & c.EVENT_ID == event_id 
                           & c.SECTION == section
                           & c.CHANGE_DATE > Attend_Date
                       select c;
    return View(classListQry);
}

这是单击保存按钮时执行的来自控制器的代码。

public ActionResult SaveAttendance()
{
    ViewBag.message = "The attendance for the class was saved for: " + Session["attend_date"].ToString();
    return View();
}

单击“保存”按钮时,我需要能够将每个学生的选定出勤率推回数据库。 student_list模型包含学生的唯一ID,但我还没有找到一种将下拉列表中选择的值链接到所选学生的方法。

0 个答案:

没有答案