How to make Check Box List in ASP.Net MVC

后端 未结 2 1134
孤城傲影
孤城傲影 2020-11-28 04:01

I have a form with a list of checkboxes. A user can select all values, no values, or any in between. Example:

\"

相关标签:
2条回答
  • 2020-11-28 04:36

    You can also do Using jquery.No need to change any controller or action.It will simply add the selected checkboxes value in the database table's column as a coma separated.Just add the code in the View Page.

     <div class="editor-field">
    
            @Html.HiddenFor(model => model.hobbies, new { htmlAttributes = new { id = "hobbies" } })
            Hobbies :
            <input type="checkbox" id="r" onchange="getSelected()" value="Reading" />
            Reading
            <input id="w" type="checkbox" value="Writing" onchange="getSelected()" />
            Writing
    
            <script>
                function getSelected() {
                    var sList = "";
                    $('input[type=checkbox]').each(function () {
                        if (this.checked) {
                            sList += this.value + ",";
    
                        }
                    });
                    $("#hobbies").val(sList);
                }
            </script>
            @Html.ValidationMessageFor(model => model.hobbies)
        </div>
    
    0 讨论(0)
  • 2020-11-28 05:00

    Here's an example of how to do that.

    HomeModel.cs

    public class HomeModel
    {
        public IList<string> SelectedFruits { get; set; }
        public IList<SelectListItem> AvailableFruits { get; set; }
    
        public HomeModel()
        {
            SelectedFruits = new List<string>();
            AvailableFruits = new List<SelectListItem>();
        }
    }
    

    HomeController.cs

    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            var model = new HomeModel
            {
                AvailableFruits = GetFruits()
            };
            return View(model);
        }
    
        [HttpPost]
        public ActionResult Index(HomeModel model)
        {
            if (ModelState.IsValid)
            {
                var fruits = string.Join(",", model.SelectedFruits);
    
                // Save data to database, and redirect to Success page.
    
                return RedirectToAction("Success");
            }
            model.AvailableFruits = GetFruits();
            return View(model);
        }
    
        public ActionResult Success()
        {
            return View();
        }
    
        private IList<SelectListItem> GetFruits()
        {
            return new List<SelectListItem>
            {
                new SelectListItem {Text = "Apple", Value = "Apple"},
                new SelectListItem {Text = "Pear", Value = "Pear"},
                new SelectListItem {Text = "Banana", Value = "Banana"},
                new SelectListItem {Text = "Orange", Value = "Orange"},
            };
        }
    }
    

    Index.cshtml

    @model DemoMvc.Models.HomeModel
    @{
        Layout = null;
    }
    
    <!DOCTYPE html>
    
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>Index</title>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
    </head>
    <body>
        <div class="container">
            @using (Html.BeginForm("Index", "Home"))
            {
                foreach (var item in Model.AvailableFruits)
                {
                    <div class="checkbox">
                        <label>
                            <input type="checkbox"
                                   name="SelectedFruits"
                                   value="@item.Value"
                                   @if(Model.SelectedFruits.Contains(item.Value))
                                   {
                                       <text> checked </text> 
                                   } 
                                   /> @item.Text
                            </label>
                        </div>
                }
                <div class="form-group text-center">
                    <input type="submit" class="btn btn-primary" value="Submit" />
                </div>
            }
        </div>
    </body>
    </html>
    

    Which should result in the following within the Post Action:

    Post Action

    0 讨论(0)
提交回复
热议问题