En MVC 6, ¿cómo codificar la lista de casillas de verificación en la vista y pasar los valores marcados al controlador?

Lo siento, pero la mayoría de mis búsquedas me llevan a los viejos códigos MVC. Cualquier ayuda será apreciada.

En MVC 6 con ayudantes de etiqueta, ¿cómo codifica un conjunto de casillas de verificación?

Use el ayudante de etiqueta para la etiqueta, de modo que al hacer clic se alternará el valor marcadoGuarde (¿Enlazar?) El valor marcado en la propiedad IsOptionSelectedPase estos valores marcados nuevamente al controlador después de hacer clic en Enviar

?

Pude mostrar las casillas de verificación con etiquetas correctamente, pero no sé cómo pasar los valores marcados al controlador a través del modelo. En este momento, los valores IsOptionSelected vuelven como falsos.

También pude hacer que el html helper para la etiqueta funcionara pero no para el tag helper. Puede que también esté codificando todo esto mal, ¡así que cualquier consejo será útil!

Esto es lo que tengo hasta ahora:

Monitor:

Entidad:

public class PhoneOption
{
    public bool IsOptionSelected { get; set; } = false;
    public int OptionId { get; set; }
    public string OptionName { get; set; }
}

Modelo:

[Display(Name = "Phone Options")]
public IEnumerable<PhoneOption> PhoneOptions { get; set; }

. . . .
PhoneOptions = repository.GetPhoneOptions();

Repositorio:

public IEnumerable<PhoneOption> GetPhoneOptions()
{
    IEnumerable<PhoneOption> options = new[]
    {
        new PhoneOption { OptionId = 1, OptionName = "Phone Case",       IsOptionSelected = false },  
        new PhoneOption { OptionId = 2, OptionName = "Screen Protector", IsOptionSelected = false },
        new PhoneOption { OptionId = 3, OptionName = "Car Charger",      IsOptionSelected = false },
        new PhoneOption { OptionId = 4, OptionName = "Extra Cable",      IsOptionSelected = false }
    };
    return options;
 }

Ver:

<div class="form-group">
    <label class="control-label">Phone Options</label>
    <div>
        @foreach (var option in Model.PhoneOptions)
        {
            <div>
                @{ string cbId = "PhoneOption_" + @option.OptionId; }
                <input asp-for=@option.IsOptionSelected type="checkbox" value=@option.IsOptionSelected id=@cbId name=@cbId />
                @Html.Label(@cbId.ToString(), @option.OptionName)
                @*This is causing invalid operation exception*@
                @*<label asp-for=@cbId.ToString()>@option.OptionName</label>*@ 
                <span asp-validation-for=@cbId class="text-danger" role="alert"></span>
            </div>
        }
    </div>    
</div>

¡Gracias por adelantado!