Das ist nicht die richtige Syntax
Der erste Parameter ist nicht der Wert des Kontrollkästchens, sondern die Ansicht, dass die Modellbindung für das Kontrollkästchen angezeigt wird.
@Html.CheckBoxFor(m => m.SomeBooleanProperty, new { @checked = "checked" });
Der erste Parameter muss eine boolesche Eigenschaft in Ihrem Modell identifizieren (es ist ein Ausdruck, keine anonyme Methode, die einen Wert zurückgibt), und die zweite Eigenschaft definiert alle zusätzlichen HTML-Elementattribute. Ich bin nicht 100% sicher, dass das obige Attribut zunächst Ihr Kontrollkästchen aktiviert, aber Sie können es versuchen. Aber Vorsicht. Auch wenn es möglicherweise funktioniert, können später Probleme auftreten, wenn Sie gültige Modelldaten laden und diese bestimmte Eigenschaft auf festgelegt ist false
.
Der richtige Weg
Obwohl mein richtiger Vorschlag wäre, Ihrer Ansicht ein initialisiertes Modell mit dieser bestimmten booleschen Eigenschaft bereitzustellen, die auf initialisiert wurde true
.
Eigenschaftstypen
Gemäß den MVC- HtmlHelper
Erweiterungsmethoden von Asp.net und der inneren Funktionsweise müssen Kontrollkästchen an boolesche Werte und nicht an Ganzzahlen gebunden werden , was Sie anscheinend tun möchten . In diesem Fall könnte ein verstecktes Feld das speichern id
.
Andere Helfer
Es gibt natürlich auch andere Hilfsmethoden, mit denen Sie die Werte und das Verhalten von Kontrollkästchen flexibler gestalten können:
@Html.CheckBox("templateId", new { value = item.TemplateID, @checked = true });
Hinweis : checked
Ist eine boolesche Eigenschaft eines HTML-Elements und kein Wertattribut. Dies bedeutet, dass Sie ihm einen beliebigen Wert zuweisen können. Die korrekte HTML-Syntax enthält keine Zuweisungen, es gibt jedoch keine Möglichkeit, ein anonymes C # -Objekt mit einer undefinierten Eigenschaft bereitzustellen, die als HTML-Elementeigenschaft gerendert wird.
item
Teil Ihres Modells oder was?