I want to make a day of the week checkbox using a viewModel. Everything is ok on the View, but, if I click submit to save changes, weeklySchedule
within my httppost method is null.
Why is weeklySchedule
null? How would I send the selected checkbox value to my HttPost
action? Any advice would help.
Model:
public class Settings
{
public class WeeklySetting
{
public string DisplayName { get; set; }
public string Value { get; set; }
public bool IsChecked { get; set; }
}
}
View Model:
public class ViewModels
{
public class Weekly
{
public List<Settings.WeeklySetting> Settings { get; set; }
}
}
public ActionResult CreateWeekly()
{
var model = new ViewModels.Weekly
{
Settings = new[]
{
new Settings.WeeklySetting{ DisplayName="Monday", Value="MON", IsChecked=false},
new Settings.WeeklySetting{ DisplayName="Tuesday", Value="TUE", IsChecked=false},
new Settings.WeeklySetting{ DisplayName="Wednesday", Value="WED", IsChecked=false},
new Settings.WeeklySetting{ DisplayName="Thursday", Value="THU", IsChecked=false},
new Settings.WeeklySetting{ DisplayName="Friday", Value="FRI", IsChecked=false},
new Settings.WeeklySetting{ DisplayName="Saturday", Value="SAT", IsChecked=false},
new Settings.WeeklySetting{ DisplayName="Sunday", Value="SUN", IsChecked=false},
}.ToList()
};
return View(model);
}
[HttpPost]
public ActionResult CreateWeekly(string submitButton, ViewModels.Weekly weeklySchedule)
{
//Do something
return View("CreateWeekly", weeklySchedule);
}
View:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MyProject.Controllers.ViewModels.Weekly>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> CreateWeekly </asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<% using (Html.BeginForm()) { %>
<div>
<%foreach (var item in Model.Settings)
{%>
<%:Html.CheckBoxFor(q=>item.IsChecked) %>
<%:Html.LabelFor(q=>item.IsChecked,item.DisplayName) %>
<%:Html.HiddenFor(q=>item.Value) %>
<% } %>
</div>
<br />
<input value="GenerateForWeekly" name="submitButton" type="submit" />
<%} %>
</asp:Content>