У меня есть списки курсов из разных таблиц, отображаемые в том же виде, как показано ниже
Я хочу, чтобы пользователь выбрал курсы, которые он хочет зарегистрировать, установив флажки,Как получить идентификаторы выбранных курсов, а затем передать их контроллеру для сохранения в другой таблице.
У меня есть HTML-код, такой как
@model FlexSchool.Data.Models.ClassModelIndex
<tbody>
@foreach (var item in Model.AdmInstAssignCourses.Where(m => m.IsCompulsory == true))
{
<tr>
<td>
<input type="checkbox" class="checkBox" name="check" value="@item.AdmInstCourses.CourseId" />
</td>
<td> @Html.DisplayFor(modelItem => item.AdmInstCourses.CourseCode) </td>
<td> @Html.DisplayFor(modelItem => item.AdmInstCourses.CourseName)</td>
<td> @Html.DisplayFor(modelItem => item.AdmInstCourses.Units)</td>
</tr>
}
</tbody>
Где ClassModelIndex
- этокласс IEnumerable
Классы, которые я использовал при отображении различных таблиц в списке.
Моя кнопка работает таким образом <input type="submit" value="Register Courses" id="register" class="btn btn-rose" />
Мой скрипт выглядит так
<script>
$(document).ready(function () {
$("#register").click(function () {
var selectedIDs = [];
$('input[type=checkbox]').each(function () {
selectedIDs.push($(this).val());
});
$.ajax({
url = "/Course/RegisterCourse",
type = "POST",
data = JSON.stringify({ courseIDs: selectedIDs }),
contentType = "application/json; charset=utf-8",
dataType = "json",
success = function (data) {
alert(data);
},
error = function () {
alert("Error while registering courses!");
},
});
});
</script>
МойController
is
[HttpPost]
public async Task<ActionResult> RegisterCourse(List<string> courseIDs)
{
var user = HttpContext.Session.GetString(InstName);
if (user == null)
{
return RedirectToAction("Login", "Account");
}
foreach (string courseID in courseIDs)
{
AdmInstCourses obj = await _context.AdmInstCourses.FindAsync(courseID);
var mycourses = new CourseRegModel { CourseCode = obj.CourseCode, CourseTitle = obj.CourseName, CourseUnit = obj.Units};
_context.Add(mycourses);
}
await _context.SaveChangesAsync();
return RedirectToAction("MyCourses", "Course");
}
Но когда я запускаю код в режиме отладки, я замечаю, что мой courseIDs
не получает никакого списка строк в качестве Id. Так что либо script
не получает флажки для передачи на контроллер.
Что именно я делаю не так?