From 225c52ad0e9e966b9a494ace58713000e503aab5 Mon Sep 17 00:00:00 2001 From: Keith Dahlby Date: Thu, 28 Sep 2023 09:09:16 -0500 Subject: [PATCH] Demo checkboxes for bool property on list --- Pages/Demos/Checkboxes.cshtml | 20 ++++++++++++++++++++ Pages/Demos/Checkboxes.cshtml.cs | 16 ++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/Pages/Demos/Checkboxes.cshtml b/Pages/Demos/Checkboxes.cshtml index 6e4a1c1..3a0a640 100644 --- a/Pages/Demos/Checkboxes.cshtml +++ b/Pages/Demos/Checkboxes.cshtml @@ -80,6 +80,26 @@ } +
+

+ It's also common to bind a boolean property from a list to checkboxes. +

+ @for (var i = 0; i + + @number.Name + + @* The asp-for above appends an input with value="false" to the form. *@ + @* An explicit hidden generates input with value="False": *@ + @* *@ + + } + + Selected numbers: @string.Join(", ", Model.Numbers.Where(n => n.IsSelected).Select(n => n.Name)) +
+ diff --git a/Pages/Demos/Checkboxes.cshtml.cs b/Pages/Demos/Checkboxes.cshtml.cs index 2de24a2..7e455fc 100644 --- a/Pages/Demos/Checkboxes.cshtml.cs +++ b/Pages/Demos/Checkboxes.cshtml.cs @@ -8,6 +8,13 @@ public class Checkboxes : PageModel { public string? StatusMessage { get; set; } + public void OnGet() + { + Numbers.Add(new() { Name = "One" }); + Numbers.Add(new() { Name = "Two" }); + Numbers.Add(new() { Name = "Three" }); + } + public IActionResult OnPost() { StatusMessage = "Form was submitted: " + (ModelState.IsValid @@ -36,4 +43,13 @@ public class InputModel { public bool IsChecked { get; set; } } + + [BindProperty] + public List Numbers { get; } = new(); + + public class Selectable + { + public required string Name { get; set; } + public bool IsSelected { get; set; } + } } \ No newline at end of file