ASP.NET MVC Checkbox Group

后端 未结 5 797
渐次进展
渐次进展 2020-12-29 10:36

I am trying to formulate a work-around for the lack of a \"checkbox group\" in ASP.NET MVC. The typical way to implement this is to have check boxes of the same name, each

5条回答
  •  春和景丽
    2020-12-29 11:00

    I don't know how to solve your problem, but you could define your checkboxes with this code:

    <%= Html.CheckBox("n[0]") %><%= Html.Hidden("n[0]",false) %>
    <%= Html.CheckBox("n[1]") %><%= Html.Hidden("n[1]",false) %>
    <%= Html.CheckBox("n[2]") %><%= Html.Hidden("n[2]",false) %>
    

    Hidden fields are needed, because if checkbox is not checked, form doesn't send any value. With hidden field it sends false.

    Your post method will be:

    [HttpPost]
    public ActionResult Test(bool[] n)
    {
        return View();
    }
    

    It may not be optimal and I am open to comments, but it works:)

    EDIT

    Extended version:

    <%= Html.CheckBox("n[0].Checked") %><%= Html.Hidden("n[0].Value",32) %><%= Html.Hidden("n[0].Checked",false) %>
    <%= Html.CheckBox("n[1].Checked") %><%= Html.Hidden("n[1].Value",55) %><%= Html.Hidden("n[1].Checked",false) %>
    <%= Html.CheckBox("n[2].Checked") %><%= Html.Hidden("n[2].Value",76) %><%= Html.Hidden("n[2].Checked",false) %>
    

    Your post method will be:

    [HttpPost]
    public ActionResult Test(CheckedValue[] n)
    {
        return View();
    }
    
    public class CheckedValue
    {
         public bool Checked { get; set; }
         public bool Value { get; set; }
    }
    

    I wrote it without VS, so it may need little correction.

提交回复
热议问题