Verzeihen Sie meine Ignoranz. Nicht viel MVC-Arbeit gemacht, und ich bin mir sicher, dass es eine bessere Möglichkeit geben muss, dies zu tun, aber ich kann es nicht finden. Ich habe einen Flags wie dieser Enum:So reduzieren Sie Code-Duplizierung in ASP.NET MVC-Ansicht beim Arbeiten mit Flags enum
[Flags]
public enum Services
{
Foo = 1,
Bar = 2,
Meh = 4
}
Und eine SelectedServices Eigenschaft auf meinem Modell, das einen Wert dieses Typs hat. In der Ansicht habe ich ein Kontrollkästchen für jeden möglichen Service. Ich habe die Binding-Logik wie folgt implementiert:
<div><label><input type="checkbox" name="services" value="@((int)Services.Foo)"
@if(Model.SelectedServices.HasFlag(Services.Foo))
{
<text>checked</text>
}
/>Foo</label></div>
<div><label><input type="checkbox" name="services" value="@((int)Services.Bar)"
@if(Model.SelectedServices.HasFlag(Services.Bar))
{
<text>checked</text>
}
/>Bar</label></div>
Und so weiter. Was funktioniert, ist aber wirklich schrecklich chaotisch.
Es muss sicherlich eine bessere Möglichkeit geben, dies zu kapseln - aber ich habe keine Ahnung, was das relevante Konzept in MVC ist?
Google-Suche ergab zur Karte ich [dies] (http: // stackov erflow.com/questions/388483/how-do-you-create-a-dropdownlist-from-an-enum-in-asp-net-mvc); nicht sicher, ob es genau das ist, was Sie brauchen, aber sollte Ihnen eine Vorstellung davon geben, was Sie tun müssen –
Erstellen Sie ein Ansichtsmodell mit 'bool IsFoo' und' bool IsBar' und 'bool IsMeh', dann können Sie das stark typisierte' Html verwenden .CheckBoxFor() 'Methode zum Erzeugen der Checkboxen –