Wie codiere ich in MVC 6 die Kontrollkästchenliste in der Ansicht und übergebe die überprüften Werte an die Steuerung?

Tut mir leid, aber die meisten meiner Suchanfragen führen mich zu alten MVC-Codes. Jede Hilfe wird geschätzt.

Wie codieren Sie in MVC 6 mit Tag-Hilfsprogrammen eine Reihe von Kontrollkästchen?

Verwenden Sie den Tag-Helfer für die Beschriftung. Wenn Sie darauf klicken, wird der aktivierte Wert umgeschaltet.Speichern (Binden?) Des markierten Werts an die IsOptionSelected-EigenschaftLeiten Sie diese überprüften Werte an den Controller zurück, nachdem Sie auf Submit @ geklickt habe

?

Ich konnte die Kontrollkästchen mit Beschriftungen korrekt anzeigen, aber ich weiß nicht, wie ich die überprüften Werte über das Modell an die Steuerung zurückgeben kann. Im Moment werden IsOptionSelected-Werte als false zurückgegeben.

Ich konnte auch den HTML-Helfer für das Label zum Laufen bringen, aber nicht für den Tag-Helfer. Ich kann diese auch alle falsch kodieren, also helfen alle mögliche Spitzen!

Hier ist was ich bisher habe:

Anzeige

Entität

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

Modell

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

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

Repository

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;
 }

Aussicht

<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>

Danke im Voraus