Passing values of checkboxes from View to Controller
asp.net-mvc, checkbox
Solution
try this :
<p>
@using (Html.BeginForm())
{
<p>
Start Date: @Html.TextBox("StartDate")
<br />
<br />
End Date: @Html.TextBox("EndDate")
<br />
<br />
<input type="submit" value="Filter" />
</p>
}
</p>
<p>
@foreach (var item in Model.BettingOffices)
{
<label>@Html.DisplayFor(modelItem => item.OfficeName)</label>
<input type="checkbox" name="bettingOfficeIDs" value="@item.BettingOfficeID">
}
</p>
And in your Action you can get the selected office ids in bettingOfficeIDs variable:
public ActionResult YourActionName(int[] bettingOfficeIDs)
Problem
I have a view with a number of checkboxes in it. I want to be able to pass the values of the checkboxes to the controller, then output a list of the OfficeNames that have been ticked. I am not sure how to pass the values of multiple checkboxes back to the controller, or how to output the OfficeNames based on which boxes have been ticked View: ``` <p> @using (Html.BeginForm()) { <p> Start Date: @Html.TextBox("StartDate") <br /> <br /> End Date: @Html.TextBox("EndDate") <br /> <br /> <input type="submit" value="Filter" /> </p> } <p> @foreach (var item in Model.BettingOffices) { <label>@Html.DisplayFor(modelItem => item.OfficeName)</label> <input type="checkbox" name="selectedShops" value="@item.OfficeName"> } </p> ``` Controller: ``` public class DailyReportController : Controller { private RiskEntities _db = new RiskEntities(); // GET: /DailyReport/ public ActionResult Index(DateTime? startDate, DateTime? endDate) { if (startDate == null || endDate == null) { var dailyReportModelBlank = new DailyReportModel(); dailyReportModelBlank.BettingOffices = (from bo in _db.BettingOffices orderby bo.OfficeName select bo ).ToList(); //dailyReportModelBlank.DailyReports.Add(new DailyReport()); return View(dailyReportModelBlank); } var endDateToUse = (DateTime) endDate; endDateToUse = endDateToUse.AddDays(+1); var dailyReportModel = new DailyReportModel { DailyReports = (from dr in _db.DailyReports where dr.DailyReportDate >= startDate && dr.DailyReportDate <= endDateToUse select dr).ToList(), BettingOffices = (from bo in _db.BettingOffices select bo).ToList() }; return View(dailyReportModel); } ``` Model: ``` public class DailyReportModel { private List<DailyReport> _dailyReports = new List<DailyReport>(); private List<BettingOffice> _bettingOffices = new List<BettingOffice>(); public List<DailyReport> DailyReports { get { return _dailyReports; } set { _dailyReports = value; } } public List<BettingOffice> BettingOffices { get { return _bettingOffices; } set { _bettingOffices = value; } } } ``` BettingOffice Class: ``` public partial class BettingOffice { public int BettingOfficeID { get; set; } public string OfficeName { get; set; } public string OfficeCode { get; set; } public string IpAddress { get; set; } public Nullable<bool> SupportOnly { get; set; } public Nullable<int> SisSrNumer { get; set; } public Nullable<bool> Local { get; set; } public string Server { get; set; } } ```