Skip to content

Commit 61d84ea

Browse files
authored
Merge pull request #72 from haacked/gh71
Add demo checkboxes for `bool` property on list
2 parents ed09a05 + 225c52a commit 61d84ea

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

Pages/Demos/Checkboxes.cshtml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,26 @@
8080
}
8181
</div>
8282

83+
<div class="form-field">
84+
<p>
85+
It's also common to bind a boolean property from a list to checkboxes.
86+
</p>
87+
@for (var i = 0; i <Model.Numbers.Count; i++) {
88+
var number = Model.Numbers[i];
89+
90+
<label>
91+
<input type="checkbox" asp-for="Numbers[i].IsSelected" />
92+
@number.Name
93+
</label>
94+
@* The asp-for above appends an input with value="false" to the form. *@
95+
@* An explicit hidden generates input with value="False": *@
96+
@* <input type="hidden" asp-for="Numbers[i].IsSelected" /> *@
97+
<input type="hidden" asp-for="Numbers[i].Name" />
98+
}
99+
<span asp-validation-for="Numbers"></span>
100+
<em class="results">Selected numbers: @string.Join(", ", Model.Numbers.Where(n => n.IsSelected).Select(n => n.Name))</em>
101+
</div>
102+
83103
<input type="submit" value="Submit"/>
84104
</form>
85105
</fieldset>

Pages/Demos/Checkboxes.cshtml.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,13 @@ public class Checkboxes : PageModel
88
{
99
public string? StatusMessage { get; set; }
1010

11+
public void OnGet()
12+
{
13+
Numbers.Add(new() { Name = "One" });
14+
Numbers.Add(new() { Name = "Two" });
15+
Numbers.Add(new() { Name = "Three" });
16+
}
17+
1118
public IActionResult OnPost()
1219
{
1320
StatusMessage = "Form was submitted: " + (ModelState.IsValid
@@ -36,4 +43,13 @@ public class InputModel
3643
{
3744
public bool IsChecked { get; set; }
3845
}
46+
47+
[BindProperty]
48+
public List<Selectable> Numbers { get; } = new();
49+
50+
public class Selectable
51+
{
52+
public required string Name { get; set; }
53+
public bool IsSelected { get; set; }
54+
}
3955
}

0 commit comments

Comments
 (0)