checkbox always bind to false even if it is checked asp.net mvc 5
<p>i have created a list of model binder with checkbox  that is supposed to handle my forms  but when i post to controller it always set checkbox to false even if it is checked on client side, any help?</p>

<p>my model</p>

<pre><code>   public class RoleCheckbox
{
    public int id { get; set; }
    public bool ischecked { get; set; }
    public string name { get; set; }
}

public class UsersNew
{
    public IList&lt;RoleCheckbox&gt; Roles { get; set; }
    [Required,MaxLength(128)]
    public string username { get; set; }
    [Required,DataType(DataType.Password)]
    public string password { get; set; }
    [Required,MaxLength(256),DataType(DataType.EmailAddress)]
    public string email { get; set; }

}
</code></pre>

<p>client code</p>

<pre><code>  &lt;div class="panel panel-default"&gt;
    &lt;div class="panel-heading"&gt;Roles&lt;/div&gt;
    &lt;div class="panel-body"&gt;
        &lt;ul class="list-group"&gt;
            @for (var i = 0; i &lt; Model.Roles.Count; i++)
            {
                &lt;li class="list-group-item"&gt;
                    @Html.Hidden("Roles[" +i +"].id",Model.Roles[i].id)
                    &lt;label for="Roles_@(i)_ischecked"&gt;
                        @Html.CheckBox("Roles[" +i+ "].id",Model.Roles[i].ischecked)
                        @Model.Roles[i].name
                    &lt;/label&gt;
                &lt;/li&gt;

            }
        &lt;/ul&gt;
    &lt;/div&gt;
&lt;/div&gt;
</code></pre>

<p>my method </p>

<pre><code>HttpPost,ValidateAntiForgeryToken]
    public ActionResult New(UsersNew form)
    {

        var user = new User();
        syncRole(form.Roles, user.Roles);

        if (Database.Session.Query&lt;User&gt;().Any(u =&gt; u.username == form.username))
            ModelState.AddModelError("username", "username must be unique");
        if (!ModelState.IsValid)
            return View(form);

        user.email = form.email;
        user.username = form.username;
        user.SetPassword(form.password);
        Database.Session.Save(user);
        return RedirectToAction("index");
    }
</code></pre>