diff --git a/aspnetcore/blazor/components/data-binding.md b/aspnetcore/blazor/components/data-binding.md
index 73437b17c98e..e73ebbce9584 100644
--- a/aspnetcore/blazor/components/data-binding.md
+++ b/aspnetcore/blazor/components/data-binding.md
@@ -75,6 +75,94 @@ Razor attribute binding is case sensitive:
* `@bind` and `@bind:event` are valid.
* `@Bind`/`@Bind:Event` (capital letters `B` and `E`) or `@BIND`/`@BIND:EVENT` (all capital letters) **are invalid**.
+::: moniker range=">= aspnetcore-6.0"
+
+## Multiple option selection with ` ` elements
+
+*This feature applies to ASP.NET Core 6.0 Preview 7 or later. ASP.NET Core 6.0 is scheduled for release later this year.*
+
+Binding supports [`multiple`](https://developer.mozilla.org/docs/Web/HTML/Attributes/multiple) option selection with ` ` elements. The [`@onchange`](xref:mvc/views/razor#onevent) event provides an array of the selected elements via [event arguments (`ChangeEventArgs`)](xref:blazor/components/event-handling#event-arguments). The value must be bound to an array type.
+
+`Pages/BindMultipleInput.razor`:
+
+```razor
+@page "/bind-multiple-input"
+
+
Bind Multiple inputExample
+
+
+
+ Select one or more cars:
+
+ Audi
+ Jeep
+ Opel
+ Saab
+ Volvo
+
+
+
+
+
+ Selected Cars: @string.Join(", ", SelectedCars)
+
+
+
+
+ Select one or more cities:
+
+ Baltimore
+ Los Angeles
+ Portland
+ San Francisco
+ Seattle
+
+
+
+
+
+ Selected Cities: @string.Join(", ", SelectedCities)
+
+
+@code {
+ public string[] SelectedCars { get; set; } = new string[] { };
+ public string[] SelectedCities { get; set; } = new[] { "bal", "sea" };
+
+ void SelectedCarsChanged(ChangeEventArgs e)
+ {
+ SelectedCars = (string[])e.Value;
+ }
+}
+```
+
+For information on how empty strings and `null` values are handled in data binding, see the [Binding `` element options to C# object `null` values](#binding-select-element-options-to-c-object-null-values) section.
+
+::: moniker-end
+
+## Binding `` element options to C# object `null` values
+
+There's no sensible way to represent a `` element option value as a C# object `null` value, because:
+
+* HTML attributes can't have `null` values. The closest equivalent to `null` in HTML is absence of the HTML `value` attribute from the `` element.
+* When selecting an ` ` with no `value` attribute, the browser treats the value as the *text content* of that ` `'s element.
+
+The Blazor framework doesn't attempt to suppress the default behavior because it would involve:
+
+* Creating a chain of special-case workarounds in the framework.
+* Breaking changes to current framework behavior.
+
+::: moniker range=">= aspnetcore-5.0"
+
+The most plausible `null` equivalent in HTML is an *empty string* `value`. The Blazor framework handles `null` to empty string conversions for two-way binding to a ``'s value.
+
+::: moniker-end
+
+::: moniker range="< aspnetcore-5.0"
+
+The Blazor framework doesn't automatically handle `null` to empty string conversions when attempting two-way binding to a ``'s value. For more information, see [Fix binding `` to a null value (dotnet/aspnetcore #23221)](https://github.com/dotnet/aspnetcore/pull/23221).
+
+::: moniker-end
+
## Unparsable values
When a user provides an unparsable value to a databound element, the unparsable value is automatically reverted to its previous value when the bind event is triggered.
@@ -325,5 +413,5 @@ For an alternative approach suited to sharing data in memory and across componen
*
* [Binding to radio buttons in a form](xref:blazor/forms-validation#radio-buttons)
-* [Binding `` element options to C# object `null` values in a form](xref:blazor/forms-validation#binding-select-element-options-to-c-object-null-values)
+* [Binding `InputSelect` options to C# object `null` values](xref:blazor/forms-validation#binding-inputselect-options-to-c-object-null-values)
* [ASP.NET Core Blazor event handling: `EventCallback` section](xref:blazor/components/event-handling#eventcallback)
diff --git a/aspnetcore/blazor/components/event-handling.md b/aspnetcore/blazor/components/event-handling.md
index e5c5c8932479..8571551b7a2d 100644
--- a/aspnetcore/blazor/components/event-handling.md
+++ b/aspnetcore/blazor/components/event-handling.md
@@ -157,9 +157,9 @@ Custom events with custom event arguments are generally enabled with the followi
```html
```
diff --git a/aspnetcore/blazor/forms-validation.md b/aspnetcore/blazor/forms-validation.md
index ee7ee0955a18..587f6b021819 100644
--- a/aspnetcore/blazor/forms-validation.md
+++ b/aspnetcore/blazor/forms-validation.md
@@ -251,6 +251,83 @@ In the following example:
> [!NOTE]
> Changing the after its assigned is **not** supported.
+::: moniker range=">= aspnetcore-6.0"
+
+## Multiple option selection with the `InputSelect` component
+
+*This feature applies to ASP.NET Core 6.0 Preview 7 or later. ASP.NET Core 6.0 is scheduled for release later this year.*
+
+Binding supports [`multiple`](https://developer.mozilla.org/docs/Web/HTML/Attributes/multiple) option selection with the component. The [`@onchange`](xref:mvc/views/razor#onevent) event provides an array of the selected options via [event arguments (`ChangeEventArgs`)](xref:blazor/components/event-handling#event-arguments). The value must be bound to an array type, and binding to an array type makes the [`multiple`](https://developer.mozilla.org/docs/Web/HTML/Attributes/multiple) attribute optional on the tag.
+
+In the following example, the user must select at least two starship classifications but no more than three classifications.
+
+`Pages/BindMultipleWithInputSelect.razor`:
+
+```razor
+@page "/bind-multiple-with-inputselect"
+@using System.ComponentModel.DataAnnotations
+@using Microsoft.Extensions.Logging
+@inject ILogger Logger
+
+Bind Multiple InputSelectExample
+
+
+
+
+
+
+
+ Select one or more classifications (Minimum: 2, Maximum: 3):
+
+ Exploration
+ Diplomacy
+ Defense
+ Research
+
+
+
+
+ Submit
+
+
+
+ Selected Classifications:
+ @string.Join(", ", starship.SelectedClassification)
+
+
+@code {
+ private EditContext editContext;
+ private Starship starship = new();
+
+ protected override void OnInitialized()
+ {
+ editContext = new(starship);
+ }
+
+ private void HandleValidSubmit()
+ {
+ Logger.LogInformation("HandleValidSubmit called");
+ }
+
+ private class Starship
+ {
+ [Required, MinLength(2), MaxLength(3)]
+ public Classification[] SelectedClassification { get; set; } =
+ new[] { Classification.Diplomacy };
+ }
+
+ private enum Classification { Exploration, Diplomacy, Defense, Research }
+}
+```
+
+For information on how empty strings and `null` values are handled in data binding, see the [Binding `InputSelect` options to C# object `null` values](#binding-inputselect-options-to-c-object-null-values) section.
+
+::: moniker-end
+
+## Binding `InputSelect` options to C# object `null` values
+
+For information on how empty strings and `null` values are handled in data binding, see .
+
::: moniker range=">= aspnetcore-5.0"
## Display name support
@@ -1110,30 +1187,6 @@ The following `RadioButtonExample` component uses the preceding `InputRadio` com
::: moniker-end
-## Binding `` element options to C# object `null` values
-
-There's no sensible way to represent a `` element option value as a C# object `null` value, because:
-
-* HTML attributes can't have `null` values. The closest equivalent to `null` in HTML is absence of the HTML `value` attribute from the `` element.
-* When selecting an ` ` with no `value` attribute, the browser treats the value as the *text content* of that ` `'s element.
-
-The Blazor framework doesn't attempt to suppress the default behavior because it would involve:
-
-* Creating a chain of special-case workarounds in the framework.
-* Breaking changes to current framework behavior.
-
-::: moniker range=">= aspnetcore-5.0"
-
-The most plausible `null` equivalent in HTML is an *empty string* `value`. The Blazor framework handles `null` to empty string conversions for two-way binding to a ``'s value.
-
-::: moniker-end
-
-::: moniker range="< aspnetcore-5.0"
-
-The Blazor framework doesn't automatically handle `null` to empty string conversions when attempting two-way binding to a ``'s value. For more information, see [Fix binding `` to a null value (dotnet/aspnetcore #23221)](https://github.com/dotnet/aspnetcore/pull/23221).
-
-::: moniker-end
-
## Validation Summary and Validation Message components
The component summarizes all validation messages, which is similar to the [Validation Summary Tag Helper](xref:mvc/views/working-with-forms#the-validation-summary-tag-helper):