I am using ASP.NET MVC 4 and I created these ViewModels:
public class NotificationViewModel { public string GroupDesc { get; set; } public bool AM { get; set; } public bool PM { get; set; } public int MaxNotif { get; set; } } public class SettingsViewModel { public List<NotificationViewModel> ListNotification { get; set; } public SettingsViewModel() { ListNotification = new List<NotificationViewModel>(); } }
My view:
@model PortailT2A.Models.SettingsViewModel @{ ViewBag.Title = "Preferences"; Layout = "~/Views/Shared/_LayoutAdmin.cshtml"; } <h2>Preferences</h2> @using(Html.BeginForm("Preferences", "Administrateur", FormMethod.Post)) { <table id="settingsTable"> <tr> <th>Groupe</th> <th></th> <th>AM</th> <th>PM</th> <th>Limite de notifications</th> </tr> @for (int i = 0; i < Model.ListNotification.Count(); i++ ) { var notif = Model.ListNotification[i]; <tr> <td>@notif.GroupDesc </td> <td>Heure de notification</td> <td>@Html.CheckBoxFor(u => notif.AM) </td> <td>@Html.CheckBoxFor(u => notif.PM) </td> <td>@Html.TextBoxFor(u => notif.MaxNotif)</td> </tr> <tr/> } </table> <input type ="submit" value="Sauvegarder" /> }
My HttpGet method populates my ViewModel and returns it.
[HttpGet] public ActionResult Preferences(long idUser) { context = new MainDatabaseEntities(); List<NotificationViewModel> notifications = new List<NotificationViewModel>(); SettingsViewModel settings = new SettingsViewModel();
However, when I want to save the changes, I have a ViewModel that is null, and I don't understand why. Any ideas guys?
EDIT : my publishing method:
[HttpPost] public ActionResult Preferences(SettingsViewModel sm) { //since here my ViewModel is null context = new MainDatabaseEntities(); Utilisateur user = (from u in context.Utilisateurs where u.Username == User.Identity.Name select u).FirstOrDefault(); //operations... }
HTML generated:
<tr> <td>Groupe B </td> <td>Heure de notification</td> <td><input id="notif_AM" name="notif.AM" type="checkbox" value="true" /><input name="notif.AM" type="hidden" value="false" /> </td> <td><input checked="checked" id="notif_PM" name="notif.PM" type="checkbox" value="true" /><input name="notif.PM" type="hidden" value="false" /> </td> <td><input id="notif_MaxNotif" name="notif.MaxNotif" type="text" value="10" /></td> </tr>
source share