I have series of checkboxes that have values. Now what I want to do is when I click a button, I want to get all the values of the checked checkboxes and put it on the url string that I will be using. Here's some of my code.
<span><b>Status: </b></span>
No arrangement yet <input type="checkbox" name="scheduleType" value="@AppointmentStatus.NoSchedule"/>
Proposed <input type="checkbox" name="scheduleType" value="@AppointmentStatus.Proposed"/>
Scheduled <input type="checkbox" name="scheduleType" value="@AppointmentStatus.Scheduled"/>
Pend re-scheduling <input type="checkbox" name="scheduleType" value="@AppointmentStatus.RescheduledPending"/>
Completed <input type="checkbox" name="scheduleType" value="@AppointmentStatus.Complete"/>
Cancelled <input type="checkbox" name="scheduleType" value="@AppointmentStatus.Cancelled"/>
<span style="margin-left:50px;"><button id="btnSearch" class="btn btn-success"> Search </button></span>
Now onClick.
$('#btnSearch').click(function () {
var dateFrom = $(".dateFrom").val();
var dateTo = $(".dateTo").val();
window.location.href = "home/masterschedule?scheduleType=" + /*here goes the checkboxes*/ + "&dateFrom=" + dateFrom + "&dateTo=" + dateTo;
});
Here's my receiving action.
[InPrivate]
public ActionResult MasterSchedule(List<string> scheduleType ,string dateFrom = "", string dateTo = "")
{
var appointments = _appointmentRepository.All().ToList();
var viewModel = new MasterScheduleIndexViewModel();
if (dateFrom == "" || dateTo == "")
{
viewModel.Appointment = appointments;
viewModel.DocumentPackage = _documentPackageRepository.All().Where(a => a.AMGStatus == DocumentPackageStatus.Approved || a.DocumentPackageStatus == DocumentPackageStatus.Approved).ToList();
viewModel.AppointmentNotes = _appointmentNoteRepository.All().ToList();
viewModel.Users = _userRepository.All().ToList();
}
else
{
var startDate = DateTime.ParseExact(dateFrom, "d/M/yyyy", null);
var endDate = DateTime.ParseExact(dateTo, "d/M/yyyy", null);
viewModel.Appointment = appointments.Where(a => DateTime.ParseExact(a.AppointmentDate, "d/M/yyyy", null) >= startDate && DateTime.ParseExact(a.AppointmentDate, "d/M/yyyy", null) <= endDate).ToList();
}
return View(viewModel);
}
I'm expecting a List of strings from the url, but would it be better if it's an array? Any ideas? Thanks!